web-dev-qa-db-fra.com

Mongo: rechercher des éléments qui n'ont pas un certain champ

Comment rechercher des documents dans une collection qui manquent un certain champ dans MongoDB?

105
bcmcfc

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.

166
Andrew Orsich

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.

50
nilskp