Je suis nouveau sur mongodb et j'essaie d'interroger des objets enfants. J'ai une collection d'États, et chaque État a des villes enfants. L'une des villes a une propriété Name qui est nulle, ce qui provoque des erreurs dans mon application. Comment interroger les collections State pour trouver les villes enfants qui ont un nom == null ?
Réponse
Trop de publicités?
Javier Ferrero
Points
3582
En supposant que votre collection "states" ressemble à :
{"name" : "Spain", "cities" : [ { "name" : "Madrid" }, { "name" : null } ] }
{"name" : "France" }
La requête pour trouver des états avec des villes nulles serait :
db.states.find({"cities.name" : {"$eq" : null, "$exists" : true}});
C'est une erreur courante de rechercher des valeurs NULL comme :
db.states.find({"cities.name" : null});
car cette requête renverra tous les documents sans clé (dans notre exemple elle renverra l'Espagne et la France). Donc, à moins que vous ne soyez sûr que la clé est toujours présente, vous devez vérifier que la clé existe comme dans la première requête.