MongoDB में $or ऑपरेटर का उपयोग करके मल्टीपल फील्ड्स पर फिल्टर करना
$or` ऑपरेटर एक लॉजिकल OR क्वेरी करता है जो उन डॉक्यूमेंट्स को चुनता है जो कम से कम एक निर्दिष्ट शर्त से मेल खाते हैं। यह तब उपयोगी होता है जब आप अलग-अलग फील्ड्स पर आधारित डॉक्यूमेंट्स ढूंढना चाहते हैं जहां कोई भी शर्त पूरी हो सकती है।
नमूना डेटा बनाना
> db.findDocumentWithFilterDemo.insertOne({"ClientName":"Robert","IsMarried":false});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd4fd1e2cba06f46efe9ef1") }
> db.findDocumentWithFilterDemo.insertOne({"ClientName":"Chris","IsMarried":true});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd4fd322cba06f46efe9ef2") }
> db.findDocumentWithFilterDemo.insertOne({"ClientName":"David","IsMarried":true});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd4fd3b2cba06f46efe9ef3") }
> db.findDocumentWithFilterDemo.insertOne({"ClientName":"Carol","IsMarried":true});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd4fd452cba06f46efe9ef4") }
सभी डॉक्यूमेंट्स देखना
> db.findDocumentWithFilterDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd4fd1e2cba06f46efe9ef1"), "ClientName" : "Robert", "IsMarried" : false }
{ "_id" : ObjectId("5cd4fd322cba06f46efe9ef2"), "ClientName" : "Chris", "IsMarried" : true }
{ "_id" : ObjectId("5cd4fd3b2cba06f46efe9ef3"), "ClientName" : "David", "IsMarried" : true }
{ "_id" : ObjectId("5cd4fd452cba06f46efe9ef4"), "ClientName" : "Carol", "IsMarried" : true }
$or के साथ क्वेरी करना
उन डॉक्यूमेंट्स को खोजें जहां ClientName "Robert" नहीं है या IsMarried false नहीं है:
> db.findDocumentWithFilterDemo.find({
$or: [
{ "ClientName": { $ne: "Robert" } },
{ "IsMarried": { $ne: false } }
]
});
आउटपुट:
{ "_id" : ObjectId("5cd4fd322cba06f46efe9ef2"), "ClientName" : "Chris", "IsMarried" : true }
{ "_id" : ObjectId("5cd4fd3b2cba06f46efe9ef3"), "ClientName" : "David", "IsMarried" : true }
{ "_id" : ObjectId("5cd4fd452cba06f46efe9ef4"), "ClientName" : "Carol", "IsMarried" : true }
व्याख्या
- पहली शर्त
{ $ne: "Robert" }Chris, David, Carol से मेल खाती है। - दूसरी शर्त
{ $ne: false }Chris, David, Carol (सभी विवाहित) से मेल खाती है। $orदोनों सेट्स का यूनियन लौटाता है - प्रभावी रूप से Robert को छोड़कर सभी।
मुख्य बिंदु
$orएक शर्त सरणी लेता है; एक डॉक्यूमेंट मेल खाता है यदि कोई भी शर्त पूरी होती है।- अलग-अलग फील्ड्स पर शर्तों को संयोजित करने के लिए
$ne(नॉट इक्वल) जैसे ऑपरेटर्स के साथ उपयोग करें। - बड़े डेटासेट्स पर प्रदर्शन के लिए, शामिल फील्ड्स पर इंडेक्स सुनिश्चित करें।