MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

come interrogare oggetti figlio in mongodb

Se è esattamente null (anziché non impostato):

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

(ma come sottolinea javierfp, corrisponde anche a documenti che non hanno alcun array di città, suppongo che lo facciano).

Se la proprietà non è impostata:

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

Ho testato quanto sopra con una collezione creata con questi due inserti:

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

La prima query trova il primo stato, la seconda query trova il secondo. Se vuoi trovarli entrambi con una query puoi fare un $or domanda:

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