Mongodb: jak używać zapytania „not in”.


Możesz użyć poniższej składni, aby znaleźć wszystkie dokumenty, w których wartość określonego pola nie znajduje się na określonej liście wartości:

 db.collection.find({field1: { $nin : [" value1 ", " value2 ", " value3 "]}}) 

To konkretne zapytanie wyszukuje wszystkie dokumenty, w których wartość pola 1 nie jest równa wartości 1, wartości 2 lub wartości 3.

Poniższe przykłady pokazują, jak używać tej składni w praktyce.

Przykład 1: Zapytanie o „NOT IN” z wartością

Załóżmy, że mamy zespół windykacyjny z następującymi dokumentami:

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

Możemy użyć poniższego kodu, aby znaleźć wszystkie dokumenty, w których pole „zespół” nie jest równe wartości „Rakiety”:

 db.teams.find({team: { $nin : [" Rockets "]}}) 

To zapytanie zwraca następujące dokumenty:

 { _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 }

Należy pamiętać, że zwracane są jedynie dokumenty, w których pole „zespół” nie jest równe „Rakiety”.

Przykład 2: Zapytanie o „NON IN” z listą wartości

Załóżmy, że mamy zespół windykacyjny z następującymi dokumentami:

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

Możemy użyć poniższego kodu, aby znaleźć wszystkie dokumenty, w których pole „zespół” nie jest równe wartości „Rockets” lub „Cavs”:

 db.teams.find({team: { $nin : [" Rockets ", " Cavs "]}}) 

To zapytanie zwraca następujące dokumenty:

 { _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

Należy pamiętać, że zwracane są jedynie dokumenty, w których pole „zespół” nie jest równe „Rakiety” lub „Cavs”.

Uwaga : Pełną dokumentację funkcji $nin znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:

MongoDB: Jak wysyłać zapytania za pomocą wyrażenia regularnego „Lubię to”
MongoDB: Jak sprawdzić, czy pole zawiera ciąg znaków
MongoDB: Jak dodać nowe pole do kolekcji
MongoDB: Jak usunąć pole z każdego dokumentu

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *