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: