MongoDB में $all ऑपरेटर का उपयोग करके सटीक ऐरे सामग्री मिलान करना
$all ऑपरेटर उन डॉक्यूमेंट्स को चुनता है जहां एक ऐरे फील्ड में सभी निर्दिष्ट मान होते हैं, क्रम या अन्य तत्वों की परवाह किए बिना। यह सटीक सबसेट मिलान के लिए उपयोगी है।
नमूना डेटा बनाना
> db.findDocumentExactlySameInArrayDemo.insertOne({"TechnicalSubjects":["C++","Java","MongoDB"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd69a5f57806ebf1256f12e") }
> db.findDocumentExactlySameInArrayDemo.insertOne({"TechnicalSubjects":["MySQL","Java","MongoDB"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd69ac057806ebf1256f12f") }
> db.findDocumentExactlySameInArrayDemo.insertOne({"TechnicalSubjects":["C#","Python","MongoDB"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd69ad457806ebf1256f130") }
> db.findDocumentExactlySameInArrayDemo.insertOne({"TechnicalSubjects":["MySQL","C","MongoDB"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd69adf57806ebf1256f131") }
सभी डॉक्यूमेंट्स देखना
> db.findDocumentExactlySameInArrayDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd69a5f57806ebf1256f12e"), "TechnicalSubjects" : [ "C++", "Java", "MongoDB" ] }
{ "_id" : ObjectId("5cd69ac057806ebf1256f12f"), "TechnicalSubjects" : [ "MySQL", "Java", "MongoDB" ] }
{ "_id" : ObjectId("5cd69ad457806ebf1256f130"), "TechnicalSubjects" : [ "C#", "Python", "MongoDB" ] }
{ "_id" : ObjectId("5cd69adf57806ebf1256f131"), "TechnicalSubjects" : [ "MySQL", "C", "MongoDB" ] }
सटीक ऐरे मिलान के लिए क्वेरी करना
उन डॉक्यूमेंट्स को खोजें जहां TechnicalSubjects में सभी तीन "MySQL", "Java", "MongoDB" हैं:
> db.findDocumentExactlySameInArrayDemo.find({
"TechnicalSubjects": { "$all": ["MySQL","Java","MongoDB"] }
});
आउटपुट:
{ "_id" : ObjectId("5cd69ac057806ebf1256f12f"), "TechnicalSubjects" : [ "MySQL", "Java", "MongoDB" ] }
महत्वपूर्ण अंतर
| ऑपरेटर | व्यवहार | उदाहरण मिलान |
|---|---|---|
$all: [A, B] | ऐरे में A और B दोनों होने चाहिए (कोई भी क्रम, अन्य तत्व ठीक हैं) | [A, B, C], [B, A], [X, A, Y, B] |
{ arr: [A, B] } (सटीक मिलान) | ऐरे सटीक रूप से [A, B] होना चाहिए (समान क्रम, समान लंबाई) | केवल [A, B] |
$in: [A, B] | ऐरे में A या B (या दोनों) होना चाहिए | [A], [B], [A, B], [A, C] |
मुख्य बिंदु
$allसबसेट मिलान के लिए है, सटीक ऐरे समानता के लिए नहीं।- सटीक ऐरे समानता (क्रम + लंबाई) के लिए, क्वेरी दस्तावेज़ का उपयोग करें:
{ TechnicalSubjects: ["MySQL","Java","MongoDB"] }। $allके साथ$elemMatchका उपयोग करें जब ऐरे तत्व ऑब्जेक्ट्स हों।