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