MongoDB में $in और $and का उपयोग करके एकाधिक फील्ड्स पर सटीक मिलान करना
MongoDB में एकाधिक फील्ड्स पर सटीक मान मिलान के लिए $and के साथ $in ऑपरेटर का संयोजन उपयोग करें। यह प्रत्येक फील्ड के लिए मानों के सेट में से किसी एक से मेल खाता है।
उदाहरण: संग्रह और दस्तावेज़ बनाना
> db.demo422.insertOne({"Name":"Chris","Marks":34});
{ "acknowledged" : true, "insertedId" : ObjectId("5e73a4059822da45b30346e1") }
> db.demo422.insertOne({"Name":"Chris","Marks":56});
{ "acknowledged" : true, "insertedId" : ObjectId("5e73a40a9822da45b30346e2") }
> db.demo422.insertOne({"Name":"David","Marks":78});
{ "acknowledged" : true, "insertedId" : ObjectId("5e73a4149822da45b30346e3") }
> db.demo422.insertOne({"Name":"Sam","Marks":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5e73a41e9822da45b30346e4") }
> db.demo422.insertOne({"Name":"David","Marks":89});
{ "acknowledged" : true, "insertedId" : ObjectId("5e73a4239822da45b30346e5") }
सभी दस्तावेज़ देखना
> db.demo422.find();
आउटपुट:
{ "_id" : ObjectId("5e73a4059822da45b30346e1"), "Name" : "Chris", "Marks" : 34 }
{ "_id" : ObjectId("5e73a40a9822da45b30346e2"), "Name" : "Chris", "Marks" : 56 }
{ "_id" : ObjectId("5e73a4149822da45b30346e3"), "Name" : "David", "Marks" : 78 }
{ "_id" : ObjectId("5e73a41e9822da45b30346e4"), "Name" : "Sam", "Marks" : 45 }
{ "_id" : ObjectId("5e73a4239822da45b30346e5"), "Name" : "David", "Marks" : 89 }
Name (Chris या David) AND Marks (34 या 89) पर सटीक मिलान
> db.demo422.find({'$and': [{'Name': {'$in': ['Chris', 'David']}, 'Marks': {'$in': [34,89]}}]});
आउटपुट:
{ "_id" : ObjectId("5e73a4059822da45b30346e1"), "Name" : "Chris", "Marks" : 34 }
{ "_id" : ObjectId("5e73a4239822da45b30346e5"), "Name" : "David", "Marks" : 89 }
व्याख्या:
$and- दोनों शर्तें पूरी होनी चाहिएName: {$in: ['Chris', 'David']}- Name Chris या David होMarks: {$in: [34,89]}- Marks 34 या 89 हो- संयोजन: (Chris,34), (Chris,89), (David,34), (David,89) - इन 4 संयोजनों में से कोई भी
- परिणाम: केवल (Chris,34) और (David,89) मौजूद हैं
सरल समतुल्य (निहित AND):
db.demo422.find({
Name: {$in: ['Chris', 'David']},
Marks: {$in: [34, 89]}
})
MongoDB में शीर्ष-स्तरीय फील्ड्स निहित AND होते हैं।
सटीक दस्तावेज़ मिलान के लिए (सभी फील्ड्स):
db.demo422.find({
$or: [
{Name: "Chris", Marks: 34},
{Name: "David", Marks: 89}
]
})
प्रदर्शन: कंपाउंड इंडेक्स {Name: 1, Marks: 1} इस क्वेरी को तेज़ करेगा।