Вы можете использовать оператор $or в MongoDB для запроса документов, соответствующих одному из нескольких критериев.
Этот оператор использует следующий базовый синтаксис:
db.myCollection.find({
" $or ": [
{" field1 ": " hello "},
{" field2 ": { $gte : 10 }}
]
})
Этот конкретный пример находит все документы в коллекции под названием myCollection, где поле1 равно «привет» или поле2 имеет значение больше или равное 10.
В следующих примерах показано, как использовать этот синтаксис на практике с группами сбора со следующими документами:
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})
Пример 1. Использование оператора ИЛИ с двумя полями
Следующий код показывает, как найти все документы в коллекции Teams, где поле « team » равно «Spurs» или значение в поле «points» больше или равно 31:
db.teams.find({
" $or ": [
{" team ": " Spurs "},
{" points ": { $gte : 31 }}
]
})
Этот запрос возвращает следующие документы:
{ _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 }
Обратите внимание, что каждый выходной документ содержит «Шпоры» в поле «Команда» или значение, большее или равное 31, в поле «Очки».
Пример 2. Использование оператора ИЛИ с более чем двумя полями
В следующем коде показано, как найти все документы в коллекции Teams, где поле « team » равно «Mavs», или значение в поле «points» больше или равно 25, или значение в поле «rebounds» меньше 8:
db.teams.find({
" $or ": [
{" team ": " Mavs "},
{" points ": { $gte : 25 }},
{" rebounds ": { $lt : 8 }}
]
})
Этот запрос возвращает следующий документ:
{ _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 }
Обратите внимание, что каждый из этих документов удовлетворяет одному или нескольким из трех критериев:
- Поле «команда» равно « Mavs ».
- Поле «баллы» имеет значение больше или равное 25
- Поле «Подборы» имеет значение меньше 8
Примечание.Полную документацию по функции $or можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:
MongoDB: как использовать оператор AND в запросах
MongoDB: как проверить, содержит ли поле строку
MongoDB: как использовать запрос «НЕ В»
MongoDB: как запросить «не нуль» в определенном поле