MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

comment interroger des objets enfants dans mongodb

Si c'est exactement null (par opposition à non défini) :

db.states.find({"cities.name": null})

(mais comme le souligne javierfp, cela correspond également aux documents qui n'ont aucun tableau de villes, je suppose qu'ils le font).

Si c'est le cas que la propriété n'est pas définie :

db.states.find({"cities.name": {"$exists": false}})

J'ai testé ce qui précède avec une collection créée avec ces deux inserts :

db.states.insert({"cities": [{name: "New York"}, {name: null}]})
db.states.insert({"cities": [{name: "Austin"}, {color: "blue"}]})

La première requête trouve le premier état, la deuxième requête trouve le second. Si vous voulez les trouver tous les deux avec une seule requête, vous pouvez faire un $or requête :

db.states.find({"$or": [
  {"cities.name": null}, 
  {"cities.name": {"$exists": false}}
]})