MongoDB: ¿Encontrar un documento por inexistencia de un campo?


173

¿Hay alguna manera de especificar una condición de "donde el documento no contiene campo"?

Por ejemplo, solo quiero encontrar el primero de estos 2 porque no tiene el campo "precio".

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


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


3
También puedes probardb.mycollection.find({ "price" : null })
evilReiko

Respuestas:


329

Prueba el $existsoperador:

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

y ver su documentación .


12
+1. Sin embargo, tenga en cuenta que tales consultas no pueden usar la indexación y pueden ser muy lentas en colecciones grandes.
mnemosyn

10
Gran punto, gracias. Sé que esta advertencia es válida en MongoDB versión 1.8.xy anteriores; pero pensé que las consultas con restricciones de campo $ exist ahora pueden hacer uso de índices en la versión 2.0 ...?
húmedo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.