Yanıtlar:
Evet, $ var kullanarak mümkündür :
db.things.find( { a : { $exists : false } } ); // return if a is missing
Doğru olduğunda, $ var, alan değerinin boş olduğu belgeler dahil, alanı içeren belgelerle eşleşir. Yanlışsa, sorgu yalnızca alanı içermeyen belgeleri döndürür.
scope :without_recommendation, :where => {:recommendation => {"$exists"=>false}}
Alanın eksik olması veya null(veya hiç olmaması) umurunuzda değilse null, biraz daha kısa ve daha güvenli olanı kullanabilirsiniz :
db.things.find( { a : null } ); // return if a is missing or null
Daha güvenlidir, çünkü alan boş olsa bile $existsgeri döner true, bu genellikle istenen sonuç değildir ve bir NPE'ye yol açabilir.
nullve eksik olmaması gerektiği şeklinde yorumlayabilir . Bu aslında beklenmeyen bir davranıştır, çünkü aynı şeyi 0(ki bu da false) için yapamazsınız, nullburadaki istisna da öyle . Bu nedenle, en iyi uygulama, $exists: falsebelirsiz olmayan daha okunabilir bir cevaptır . Unutmayın, biraz daha kısa varyantınız, arkasında bu yorumu yapmanız gerekiyorsa, aslında daha kısa değildir!
aya çünkü, aolduğu nullya çünkü aeksik, o $existsda vakaları yakalamak olmayacak gibi yeterince iyi değil aise null.
$existsorgular dizin kullanamaz (bkz. Mongodb.org/display/DOCS/… ).