MongoDB में $or ऑपरेटर का उपयोग करके लॉजिकल OR क्वेरी करना
$or ऑपरेटर एक लॉजिकल OR ऑपरेशन करता है जो उन डॉक्यूमेंट्स को चुनता है जो कम से कम एक निर्दिष्ट शर्त सरणी से मेल खाते हैं।
सिंटैक्स
db.yourCollectionName.find({
$or: [
{ "yourFieldName": yourValue1 },
{ "yourFieldName": yourValue2 }
]
}).pretty();
नमूना डेटा बनाना
> db.orOperatorDemo.insertOne({"StudentNames":["John","Carol","Sam"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6b80a6d78f205348bc61b") }
> db.orOperatorDemo.insertOne({"StudentNames":["Robert","Chris","David"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6b8266d78f205348bc61c") }
> db.orOperatorDemo.insertOne({"StudentNames":["John"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5cd6b8346d78f205348bc61d") }
सभी डॉक्यूमेंट्स देखना
> db.orOperatorDemo.find().pretty();
आउटपुट:
{ "_id" : ObjectId("5cd6b80a6d78f205348bc61b"), "StudentNames" : [ "John", "Carol", "Sam" ] }
{ "_id" : ObjectId("5cd6b8266d78f205348bc61c"), "StudentNames" : [ "Robert", "Chris", "David" ] }
{ "_id" : ObjectId("5cd6b8346d78f205348bc61d"), "StudentNames" : [ "John" ] }
$or के साथ क्वेरी करना
उन डॉक्यूमेंट्स को खोजें जहां StudentNames ऐरे में "Carol" या "John" है:
> db.orOperatorDemo.find({
$or: [
{ "StudentNames": "Carol" },
{ "StudentNames": "John" }
]
}).pretty();
आउटपुट:
{ "_id" : ObjectId("5cd6b80a6d78f205348bc61b"), "StudentNames" : [ "John", "Carol", "Sam" ] }
{ "_id" : ObjectId("5cd6b8346d78f205348bc61d"), "StudentNames" : [ "John" ] }
व्याख्या
- पहली शर्त
{ "StudentNames": "Carol" }पहले डॉक्यूमेंट से मेल खाती है (ऐरे में "Carol" है)। - दूसरी शर्त
{ "StudentNames": "John" }पहले और तीसरे डॉक्यूमेंट्स से मेल खाती है। $orयूनियन लौटाता है: पहला और तीसरा डॉक्यूमेंट।- दूसरा डॉक्यूमेंट बाहर रखा गया है (इसमें न तो "Carol" और न ही "John" है)।
ऐरे फील्ड्स पर $or
जब एक ऐरे फील्ड पर उपयोग किया जाता है, तो { field: value } जांचता है कि क्या value ऐरे में एक एलिमेंट के रूप में मौजूद है। प्रत्येक $or क्लॉज स्वतंत्र रूप से जांचता है।
मुख्य बिंदु
$orएक डॉक्यूमेंट्स की सरणी लेता है, प्रत्येक एक शर्त होती है।- शर्तें अलग-अलग फील्ड्स या एक ही फील्ड पर हो सकती हैं।
- प्रदर्शन के लिए, प्रत्येक शर्त में फील्ड्स पर इंडेक्स सुनिश्चित करें (MongoDB $or क्लॉज के लिए इंडेक्स का उपयोग कर सकता है)।
$norके साथ संयोजित करें लॉजिकल NOR के लिए (कोई शर्त मेल नहीं खाती)।