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