MongoDB: как использовать оператор OR ($or) в запросах


Вы можете использовать оператор $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: как запросить «не нуль» в определенном поле

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.