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"}


3
Anda juga dapat mencobadb.mycollection.find({ "price" : null })
evilReiko

Jawaban:


329

Coba $existsoperator:

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

dan lihat dokumentasinya .


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.