MongoDB: Finden Sie ein Dokument, wenn kein Feld vorhanden ist?

173

Gibt es eine Möglichkeit, die Bedingung "Wo das Dokument kein Feld enthält" anzugeben?

Zum Beispiel möchte ich nur die erste dieser beiden finden, da sie nicht das Feld "Preis" enthält.

{"fruit":"apple", "color":"red"}


{"fruit":"banana", "color":"yellow", "price":"2.00"}
k00k
quelle
3
Sie können auch versuchendb.mycollection.find({ "price" : null })
evilReiko

Antworten:

329

Versuchen Sie den $existsOperator:

db.mycollection.find({ "price" : { "$exists" : false } })

und siehe seine Dokumentation .

feuchter
quelle
12
+1. Beachten Sie jedoch, dass solche Abfragen keine Indizierung verwenden können und bei großen Sammlungen möglicherweise sehr langsam sind.
Mnemosyn
10
Toller Punkt - danke. Ich weiß, dass diese Einschränkung in MongoDB Version 1.8.x und früher gilt. aber ich dachte, dass Abfragen mit $ Feldfeldeinschränkungen jetzt Indizes in Version 2.0 verwenden können ...?
feuchter