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"}


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 .


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.