MongoDB: Bir alanın olmamasıyla bir belge mi buldunuz?


173

"Belgenin alan içermediği durumlarda" koşulunu belirtmenin bir yolu var mı?

Örneğin, "fiyat" alanı olmadığı için bu 2 sadece ilkini bulmak istiyorum.

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


{"fruit":"banana", "color":"yellow", "price":"2.00"}


3
Ayrıca deneyebilirsinizdb.mycollection.find({ "price" : null })
evilReiko

Yanıtlar:


329

$existsOperatörü deneyin :

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

ve belgelerine bakın .


12
+1. Ancak, bu tür sorguların dizin oluşturmayı kullanamayacağını ve büyük koleksiyonlarda çok yavaş olabileceğini unutmayın.
mnemosyn

10
Harika bir nokta - teşekkürler. Bu uyarı MongoDB sürüm 1.8.x ve öncesi için geçerli olduğunu biliyorum; ama $ var alan kısıtlamaları ile sorgular şimdi sürüm 2.0 dizinleri kullanabilirsiniz düşündüm ...?
damper
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.