Mongodb: so verwenden sie eine „not in“-abfrage
Mit der folgenden Syntax können Sie alle Dokumente finden, in denen der Wert eines bestimmten Felds nicht in einer bestimmten Werteliste enthalten ist:
db.collection.find({field1: { $nin : [" value1 ", " value2 ", " value3 "]}})
Diese spezielle Abfrage sucht nach allen Dokumenten, in denen der Wert von Feld 1 nicht gleich Wert1, Wert2 oder Wert3 ist.
Die folgenden Beispiele zeigen, wie Sie diese Syntax in der Praxis anwenden können.
Beispiel 1: Abfrage nach „NOT IN“ mit einem Wert
Nehmen wir an, wir haben ein Inkassoteam mit den folgenden Dokumenten:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
Mit dem folgenden Code können wir alle Dokumente finden, bei denen das Feld „Team“ nicht dem Wert „Rockets“ entspricht:
db.teams.find({team: { $nin : [" Rockets "]}})
Diese Abfrage gibt die folgenden Dokumente zurück:
{ _id: ObjectId("619527e467d6742f66749b72"), team: 'Cavs', position: 'Guard', points: 33 } { _id: ObjectId("619527e467d6742f66749b6e"), team: 'Mavs', position: 'Guard', points: 31 } { _id: ObjectId("619527e467d6742f66749b6f"), team: 'Mavs', position: 'Guard', points: 22 }
Beachten Sie, dass nur Dokumente zurückgegeben werden, bei denen das Feld „Team“ nicht gleich „Raketen“ ist.
Beispiel 2: Abfrage nach „NON IN“ mit einer Werteliste
Nehmen wir an, wir haben ein Inkassoteam mit den folgenden Dokumenten:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
Mit dem folgenden Code können wir alle Dokumente finden, bei denen das Feld „Team“ nicht dem Wert „Rockets“ oder „Cavs“ entspricht:
db.teams.find({team: { $nin : [" Rockets ", " Cavs "]}})
Diese Abfrage gibt die folgenden Dokumente zurück:
{ _id: ObjectId("619527e467d6742f66749b6e"), team: 'Mavs', position: 'Guard', points: 31 } { _id: ObjectId("619527e467d6742f66749b6f"), team: 'Mavs', position: 'Guard', points: 22 }
Beachten Sie, dass nur Dokumente zurückgegeben werden, bei denen das Feld „Team“ nicht „Rockets“ oder „Cavs“ entspricht.
Hinweis : Die vollständige Dokumentation zur $nin -Funktion finden Sie hier .
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie Sie andere gängige Vorgänge in MongoDB ausführen:
MongoDB: So fragen Sie mit einem regulären Ausdruck „Gefällt mir“ ab
MongoDB: So überprüfen Sie, ob das Feld eine Zeichenfolge enthält
MongoDB: So fügen Sie einer Sammlung ein neues Feld hinzu
MongoDB: So entfernen Sie ein Feld aus jedem Dokument