80 votes

comment interroger des objets enfants dans mongodb

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 ?

38voto

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X