MongoDB: Temukan dokumen dengan tidak adanya bidang?

173

Apakah ada cara untuk menentukan kondisi "di mana dokumen tidak berisi bidang"?

Misalnya, saya hanya ingin mencari yang pertama dari 2 ini karena tidak memiliki bidang "harga".

{"fruit":"apple", "color":"red"}


{"fruit":"banana", "color":"yellow", "price":"2.00"}
k00k
sumber
3
Anda juga dapat mencobadb.mycollection.find({ "price" : null })
evilReiko

Jawaban:

329

Coba $existsoperator:

db.mycollection.find({ "price" : { "$exists" : false } })

dan lihat dokumentasinya .

lebih basah
sumber
12
+1. Namun, perlu diingat bahwa permintaan seperti itu tidak dapat menggunakan pengindeksan dan mungkin sangat lambat pada koleksi besar.
mnemosyn
10
Poin yang bagus - terima kasih. Saya tahu peringatan ini berlaku di MongoDB versi 1.8.x dan sebelumnya; tapi saya pikir pertanyaan dengan $ ada kendala lapangan sekarang dapat menggunakan indeks di versi 2.0 ...?
dampier