Comment rechercher des documents dans une collection qui manquent un certain champ dans MongoDB?
Ouais, c'est possible en utilisant $ existe :
db.things.find( { a : { $exists : false } } ); // return if a is missing
Quand est vrai, $ existe correspond aux documents qui contiennent le champ, y compris les documents où la valeur du champ est nulle. Si est faux, la requête renvoie uniquement les documents qui ne contiennent pas le champ.
Si vous ne vous souciez pas si le champ est manquant ou null
(ou s'il n'est jamais null
), alors vous pouvez utiliser le et légèrement plus court:
db.things.find( { a : null } ); // return if a is missing or null
C'est plus sûr parce que $exists
renverra true
même si le champ est nul, ce qui n'est souvent pas le résultat souhaité et peut conduire à un NPE.