Mongodb: jak używać „nie równe” w zapytaniach


Możesz użyć operatora $ne (co oznacza „nie równy”) w MongoDB, aby znaleźć dokumenty, w których pole nie jest równe określonej wartości.

Operator ten używa następującej podstawowej składni:

 db.myCollection.find({' team ': { $ne : " Mavs "}})

W tym konkretnym przykładzie wyszukuje wszystkie dokumenty w kolekcji o nazwie myCollection , w której pole zespołu nie jest równe „Mavs”.

Możesz także użyć operatora $nin (co oznacza „nie w”), aby znaleźć dokumenty, w których pole nie jest równe żadnej wartości na liście.

Operator ten używa następującej podstawowej składni:

 db.myCollection.find({' team ': { $nin : [" Mavs ", " Cavs ", " Spurs "]}})

W tym konkretnym przykładzie wyszukuje wszystkie dokumenty w kolekcji o nazwie myCollection , w której pole zespołu nie jest równe „Mavs”, „Cavs” ani „Spurs”.

Poniższe przykłady pokazują, jak zastosować każdą metodę w praktyce w przypadku zespołu windykacyjnego posiadającego następujące dokumenty:

 db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Spurs ", points: 35, rebounds: 12})
db.teams.insertOne({team: " Rockets ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Warriors ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Cavs ", points: 23, rebounds: 9})

Przykład 1: Zapytanie „Inne”.

Poniższy kod pokazuje, jak znaleźć wszystkie dokumenty w kolekcji zespołów , w których pole „zespół” nie jest równe „Mavs”:

 db.teams.find({' team ': { $ne : " Mavs "}})

To zapytanie zwraca następujące dokumenty:

 { _id: ObjectId("6203ec0e1e95a9885e1e7658"),
  team: 'Cavs',
  points: 23,
  rebounds: 9 }
{ _id: ObjectId("6203ec0e1e95a9885e1e7656"),
  team: 'Rockets',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("6203ec0e1e95a9885e1e7655"),
  team: 'Spurs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("6203ec0e1e95a9885e1e7657"),
  team: 'Warriors',
  points: 25,
  rebounds: 5 }

Należy pamiętać, że każdy dokument w kolekcji zespołów jest zwracany, jeśli pole zespołu nie jest równe „Mavs”.

Uwaga : W operatorze $ne rozróżniana jest wielkość liter.

Przykład 2: Zapytanie „Nie w”.

Poniższy kod pokazuje, jak znaleźć wszystkie dokumenty w kolekcji zespołów , w których pole zespołu nie jest równe „Mavs”, „Cavs” lub „Spurs”:

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

To zapytanie zwraca następujące dokumenty:

 { _id: ObjectId("6203ec0e1e95a9885e1e7656"),
  team: 'Rockets',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("6203ec0e1e95a9885e1e7657"),
  team: 'Warriors',
  points: 25,
  rebounds: 5 }

Należy pamiętać, że każdy dokument w kolekcji zespołów jest zwracany, gdy pole zespołu nie jest równe „Mavs”, „Cavs” lub „Spurs”.

Uwaga nr 1 : Pełną dokumentację funkcji $ne znajdziesz tutaj .

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

Dodatkowe zasoby

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

MongoDB: Jak sprawdzić, czy pole zawiera ciąg znaków
MongoDB: Jak wyszukać „nie null” w określonym polu
MongoDB: Jak zamienić ciągi znaków

Dodaj komentarz

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