Mongodb: jak używać operatora or ($or) w zapytaniach
Możesz użyć operatora $or w MongoDB, aby znaleźć dokumenty spełniające dowolne z wielu kryteriów.
Operator ten używa następującej podstawowej składni:
db.myCollection.find({
“ $or ”: [
{" field1 ": " hello "},
{" field2 ": { $gte : 10 }}
]
})
W tym konkretnym przykładzie wyszukuje wszystkie dokumenty w kolekcji o nazwie myCollection , gdzie pole 1 jest równe „witaj” lub pole 2 ma wartość większą lub równą 10.
Poniższe przykłady pokazują, jak zastosować tę składnię w praktyce w przypadku zespołu windykacyjnego z następującymi dokumentami:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Mavs ", points: 35, rebounds: 12})
db.teams.insertOne({team: " Spurs ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Spurs ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Spurs ", points: 23, rebounds: 9})
Przykład 1: Użyj operatora OR z dwoma polami
Poniższy kod pokazuje, jak znaleźć wszystkie dokumenty w kolekcji zespołów , w których pole „zespół” ma wartość „Spurs” lub wartość pola „punkty” jest większa lub równa 31:
db.teams.find({
“ $or ”: [
{" team ": " Spurs "},
{" points ": { $gte : 31 }}
]
})
To zapytanie zwraca następujące dokumenty:
{ _id: ObjectId("62018750fd435937399d6b6f"),
team: 'Mavs',
points: 35,
rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
team: 'Spurs',
points: 20,
rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
team: 'Spurs',
points: 25,
rebounds: 5 }
{ _id: ObjectId("62018750fd435937399d6b72"),
team: 'Spurs',
points: 23,
rebounds: 9 }
Należy pamiętać, że każdy dokument w wynikach zawiera „Ostrogi” w polu zespołu lub wartość większą lub równą 31 w polu punktów.
Przykład 2: użycie operatora OR z więcej niż dwoma polami
Poniższy kod pokazuje, jak znaleźć wszystkie dokumenty w kolekcji zespołów , w których pole „zespół” jest równe „Mavs” lub wartość pola „punkty” jest większa lub równa 25 lub wartość pola „zbiórki” jest mniejsza niż 8:
db.teams.find({
“ $or ”: [
{" team ": " Mavs "},
{" points ": { $gte : 25 }},
{" rebounds ": { $lt : 8 }}
]
})
To zapytanie zwraca następujący dokument:
{ _id: ObjectId("62018750fd435937399d6b6e"),
team: 'Mavs',
points: 30,
rebounds: 8 }
{ _id: ObjectId("62018750fd435937399d6b6f"),
team: 'Mavs',
points: 35,
rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
team: 'Spurs',
points: 20,
rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
team: 'Spurs',
points: 25,
rebounds: 5 }
Należy pamiętać, że każdy z tych dokumentów spełnia jedno lub więcej z trzech kryteriów:
- Pole „zespół” równa się „ Mavs ”
- Pole „punkty” ma wartość większą lub równą 25
- Pole „odbicia” ma wartość mniejszą niż 8
Uwaga : Pełną dokumentację funkcji $or można znaleźć tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:
MongoDB: Jak używać operatora AND w zapytaniach
MongoDB: Jak sprawdzić, czy pole zawiera ciąg znaków
MongoDB: Jak używać zapytania „NIE IN”.
MongoDB: Jak wyszukać „nie null” w określonym polu