MongoDB में दो बूलियन फील्ड में से कम से कम एक TRUE वाले दस्तावेज़ ढूंढने के लिए $expr के साथ $or ऑपरेटर का उपयोग करें।
उदाहरण
दो बूलियन फील्ड वाले दस्तावेज़ बनाएं:
> db.orTwoFieldsDemo.insertOne({"isLiveInUS": true, "isMarried": false});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfd86abf3115999ed5120d") }
> db.orTwoFieldsDemo.insertOne({"isLiveInUS": true, "isMarried": true});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfd876bf3115999ed5120e") }
> db.orTwoFieldsDemo.insertOne({"isLiveInUS": false, "isMarried": false});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfd87dbf3115999ed5120f") }
सभी दस्तावेज़ देखें:
> db.orTwoFieldsDemo.find();
{ "_id" : ObjectId("5cdfd86abf3115999ed5120d"), "isLiveInUS" : true, "isMarried" : false }
{ "_id" : ObjectId("5cdfd876bf3115999ed5120e"), "isLiveInUS" : true, "isMarried" : true }
{ "_id" : ObjectId("5cdfd87dbf3115999ed5120f"), "isLiveInUS" : false, "isMarried" : false }
दोनों FALSE वाले दस्तावेज़ बाहर करें (कम से कम एक TRUE)
> db.orTwoFieldsDemo.find({ $expr: { $or: ["$isLiveInUS", "$isMarried"] } });
आउटपुट:
{ "_id" : ObjectId("5cdfd86abf3115999ed5120d"), "isLiveInUS" : true, "isMarried" : false }
{ "_id" : ObjectId("5cdfd876bf3115999ed5120e"), "isLiveInUS" : true, "isMarried" : true }
व्याख्या:
$expr- एग्रीगेशन एक्सप्रेशन को क्वेरी में उपयोग करने की अनुमति देता है$or: ["$isLiveInUS", "$isMarried"]- दोनों फील्ड के मानों का तार्किक OR- तीसरा दस्तावेज़ (दोनों false) बाहर हो गया
विकल्प: सिंपल क्वेरी (MongoDB 3.6+)
db.orTwoFieldsDemo.find({
$or: [
{"isLiveInUS": true},
{"isMarried": true}
]
});
यह तरीका अधिक पठनीय है और इंडेक्स का उपयोग कर सकता है। $expr संस्करण तब उपयोगी है जब फील्ड नाम डायनामिक हों या जटिल एक्सप्रेशन चाहिए।
सामान्य पैटर्न: "NOT (A=false AND B=false)" = "A=true OR B=true" (डी मॉर्गन का नियम)।