MongoDB में $in ऑपरेटर का उपयोग करके एकाधिक मानों के लिए क्वेरी करना
$in ऑपरेटर उन दस्तावेज़ों का चयन करता है जहां किसी फ़ील्ड का मान निर्दिष्ट ऐरे में किसी भी मान के बराबर होता है। यह एकाधिक $or शर्तों का संक्षिप्त रूप है।
सैंपल डेटा बनाना (इंडेक्स के साथ)
> db.indexesDemo.createIndex({"StudentFirstName":1});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.indexesDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Smith"});
> db.indexesDemo.insertOne({"StudentFirstName":"Chris","StudentLastName":"Brown"});
> db.indexesDemo.insertOne({"StudentFirstName":"John","StudentLastName":"Doe"});
> db.indexesDemo.insertOne({"StudentFirstName":"David","StudentLastName":"Miller"});
सभी दस्तावेज़ देखना
> db.indexesDemo.find();
आउटपुट:
$in के साथ क्वेरी और प्रोजेक्शन
> db.indexesDemo.find( { StudentFirstName: { $in: [ "John", "David" ] } }, { _id: 0, StudentLastName: 0 } );आउटपुट (केवल StudentFirstName, John और David के लिए):
$in ऑपरेटर के लाभ
- पठनीयता: एकाधिक
$orक्लॉज़ से अधिक साफ - परफॉर्मेंस: इंडेक्स का कुशलता से उपयोग कर सकता है
- लचीलापन: किसी भी आकार का ऐरे स्वीकार करता है
तुलना: $in vs $or
// $in का उपयोग (अनुशंसित)
{ StudentFirstName: { $in: ["John", "David"] } }
// समतुल्य $or
{ $or: [
{ StudentFirstName: "John" },
{ StudentFirstName: "David" }
] }
प्रोजेक्शन नोट
दूसरे पैरामीटर { _id: 0, StudentLastName: 0 } में:
_id: 0- _id फ़ील्ड को बहिष्कृत करता हैStudentLastName: 0- StudentLastName को बहिष्कृत करता है- परिणाम: केवल StudentFirstName शामिल होता है