MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

wie man untergeordnete Objekte in mongodb abfragt

Wenn es genau null ist (im Gegensatz zu nicht gesetzt):

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

(aber wie javierfp betont, stimmt es auch mit Dokumenten überein, die überhaupt kein Städte-Array haben, ich gehe davon aus, dass sie es tun).

Falls die Eigenschaft nicht gesetzt ist:

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

Ich habe das Obige mit einer Sammlung getestet, die mit diesen beiden Einfügungen erstellt wurde:

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

Die erste Abfrage findet den ersten Zustand, die zweite Abfrage den zweiten. Wenn Sie beide mit einer Abfrage finden möchten, können Sie einen $or eingeben Abfrage:

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