Untuk menemukan dokumen yang tidak memiliki kunci tertentu, Anda ingin menggunakan $exists
:
Jadi pemeriksaan keberadaan akan terlihat seperti:
Model.where(:field.exists => false)
Model.where(:field => { :$exists => false })
Perhatikan bahwa :field.exists
pertama form menjadi form kedua sebelum dikirim ke MongoDB; Saya menyebutkan ini karena Anda tidak akan dapat menggunakan :field
di tempat lain dalam kueri tanpa menggunakan $and
atau $or
untuk menggabungkan klausa::field.exists
ekspansi dapat menyebabkan kunci dalam kueri Hash menimpa satu sama lain. Anda tidak akan mengalami masalah ini di sini, tetapi pengingat tidak ada salahnya.
Mencari true
itu mudah:
Model.where(:field => true)
Anda ingin salah satunya, jadi gabungkan dengan $or
:
Model.where(:$or => [
{ :field.exists => false },
{ :field => true }
])
Jika :field
mungkin ada tetapi memiliki null
nilai maka Anda bisa menggunakan { :field => nil }
untuk mencocokkan dokumen di mana :field
adalah null
atau tidak ada sama sekali:
Model.where(:$or => [
{ :field => null },
{ :field => true }
])
# or
Model.where(:field.in => [ null, true ]) # This is probably the one you want
Ada juga { :field => { :$type => 10 } }
jika Anda mencari hal-hal yang ada di sana dan secara eksplisit null
. Sekarang mungkin saat yang tepat untuk tinjauan singkat tentang FAQ MongoDB: