उनके आधिकारिक दस्तावेज़ों से ही या- बनाम-इन :
यदि आपके पास नीचे दिए गए दस्तावेज़ हैं:
[
{
"price": 100
},
{
"price": 200
},
{
"price": 300
},
{
"price": 400
},
{
"price": 500
}
]
यदि आप ऐसे दस्तावेज़ प्राप्त करना चाहते हैं जहाँ price
100
. के बराबर है या 500
, क्वेरी की तरह:
db.collection.find({ price: { $in: [ 100, 500 ] } })
ऊपर की तरह करने से, क्वेरी सरल और साफ है। आप $or
. का भी उपयोग कर सकते हैं $in
. के बजाय लेकिन आप शॉर्टहैंड नोटेशन को क्यों खो देंगे और एक ही फ़ील्ड के अधिक ऑब्जेक्ट को बार-बार जोड़कर अपनी क्वेरी को भारी दिखाने का प्रयास करेंगे?
डिफ़ॉल्ट रूप से यदि आप तार्किक करना चाहते हैं OR
दो अलग-अलग ऑपरेटरों पर आप $or
. का उपयोग करेंगे , लेकिन $or
. का उपयोग कब करें एक ही मैदान पर :
db.collection.find({ $or: [ { price: { $lt: 200 } }, { price: { $gt: 400 } } ] })
ऊपर की तरह जब आपके पास एक ही फ़ील्ड पर मिलान करने के लिए कई अलग-अलग शर्तें हों, तो आप इसका उपयोग करेंगे।
निष्पादित होने पर ये दो प्रश्न समान परिणाम देते हैं लेकिन जब आप $in
. का उपयोग करते हैं - यदि इनपुट मान सीधे संख्याएं हैं या स्ट्रिंग या अन्य प्रकार हो सकते हैं जहां इनपुट मान बिल्कुल price
के मानों से मेल खाएंगे डॉक्स में फ़ील्ड, लेकिन जब आप $or
. का उपयोग करते हैं आप एक ही फ़ील्ड पर विभिन्न स्थितियों की जाँच कर रहे हैं।
परीक्षा : mongoplayground