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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert