MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

como consultar objetos filho no mongodb


Se for exatamente null (em vez de não definido):
db.states.find({"cities.name": null})

(mas, como javierfp aponta, ele também corresponde a documentos que não têm matriz de cidades, estou assumindo que sim).

Se for o caso de a propriedade não estar definida:
db.states.find({"cities.name": {"$exists": false}})

Eu testei o acima com uma coleção criada com essas duas inserções:
db.states.insert({"cities": [{name: "New York"}, {name: null}]})
db.states.insert({"cities": [{name: "Austin"}, {color: "blue"}]})

A primeira consulta encontra o primeiro estado, a segunda consulta encontra o segundo. Se você quiser encontrar os dois com uma consulta, você pode fazer um $or inquerir:
db.states.find({"$or": [
  {"cities.name": null}, 
  {"cities.name": {"$exists": false}}
]})