जवाबों:
हाँ, $ का उपयोग करना संभव है :
db.things.find( { a : { $exists : false } } ); // return if a is missing
जब सत्य होता है, तो $ मौजूद दस्तावेज़ों से मेल खाता है, जिसमें फ़ील्ड शामिल होता है, जिसमें दस्तावेज़ शामिल हैं जहाँ फ़ील्ड मान शून्य है। यदि गलत है, तो क्वेरी केवल उन दस्तावेज़ों को वापस करती है जिनमें फ़ील्ड शामिल नहीं है।
scope :without_recommendation, :where => {:recommendation => {"$exists"=>false}}
यदि आपको परवाह नहीं है कि क्षेत्र गायब है null(या यदि यह कभी नहीं है null) तो आप थोड़ा कम और सुरक्षित उपयोग कर सकते हैं :
db.things.find( { a : null } ); // return if a is missing or null
यह सुरक्षित है क्योंकि फ़ील्ड शून्य होने $existsपर trueभी वापस आ जाएगी , जो अक्सर वांछित परिणाम नहीं होता है और इससे NPE हो सकता है।
nullऔर गायब नहीं होना चाहिए । यह वास्तव में अप्रत्याशित व्यवहार है, क्योंकि आप 0(जो भी है false) के लिए ऐसा नहीं कर पाएंगे , इसलिए nullयहां अपवाद है। इसलिए, सर्वोत्तम अभ्यास अधिक पठनीय उत्तर है $exists: falseजिसका उपयोग अस्पष्ट नहीं है। याद रखें, यदि आप इसके पीछे उस टिप्पणी की जरूरत है, तो आपका थोड़ा छोटा संस्करण वास्तव में छोटा नहीं है!
aक्योंकि या तो, aहै nullया क्योंकि aयाद आ रही है, तो $exists, अच्छा पर्याप्त नहीं है के रूप में यह उन मामलों में जहां पकड़ नहीं होगा aहै null।
$existक्वेरीज़ इंडेक्स का उपयोग नहीं कर सकते (देखें mongodb.org/display/DOCS/… )।