ऐसे दस्तावेज़ ढूंढने के लिए जो नहीं एक विशेष कुंजी है, आप उपयोग करना चाहते हैं $exists
:
तो अस्तित्व की जाँच इस तरह दिखेगी:
Model.where(:field.exists => false)
Model.where(:field => { :$exists => false })
ध्यान दें कि पहला :field.exists
मोंगोडीबी को भेजे जाने से पहले फॉर्म दूसरा फॉर्म बन जाता है; मैं इसका उल्लेख इसलिए कर रहा हूं क्योंकि आप :field
. का उपयोग नहीं कर पाएंगे $and
. का उपयोग किए बिना क्वेरी में कहीं और या $or
खंडों को संयोजित करने के लिए::field.exists
विस्तार से क्वेरी में कुंजी हो सकती है हैश एक दूसरे को ओवरराइट कर रहा है। आपको यहां यह समस्या नहीं होगी लेकिन रिमाइंडर चोट नहीं पहुंचा सकता।
true
खोज रहे हैं आसान है:
Model.where(:field => true)
आप दोनों में से कोई एक चाहते हैं, इसलिए उन्हें $or
:
Model.where(:$or => [
{ :field.exists => false },
{ :field => true }
])
अगर :field
वहाँ हो सकता है लेकिन एक null
है value तो आप { :field => nil }
. का उपयोग कर सकते हैं दस्तावेज़ों से मिलान करने के लिए जहां :field
null
है या वहाँ बिल्कुल नहीं:
Model.where(:$or => [
{ :field => null },
{ :field => true }
])
# or
Model.where(:field.in => [ null, true ]) # This is probably the one you want
{ :field => { :$type => 10 } }
. भी है अगर आप वहां मौजूद चीजों की तलाश में हैं और स्पष्ट रूप से null
. अब MongoDB अक्सर पूछे जाने वाले प्रश्नों की त्वरित समीक्षा के लिए एक अच्छा समय हो सकता है: