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