Mongodb: як використовувати оператор або ($or) у запитах
Ви можете використовувати оператор $or у MongoDB, щоб знайти документи, які відповідають будь-якому з кількох критеріїв.
Цей оператор використовує наступний базовий синтаксис:
db.myCollection.find({
“ $or ”: [
{" field1 ": " hello "},
{" field2 ": { $gte : 10 }}
]
})
У цьому конкретному прикладі виконується пошук усіх документів у колекції під назвою myCollection , де поле1 дорівнює «hello» або поле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: використання оператора АБО з більш ніж двома полями
Наступний код показує, як знайти всі документи в колекції команд , у яких поле «команда» дорівнює «Мавс» або значення поля «очки» більше або дорівнює 25 або значення поля «підбирання» менше 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 }
Зауважте, що кожен із цих документів відповідає одному чи кільком із трьох критеріїв:
- Поле «команда» дорівнює « Мавс »
- Поле «балів» має значення більше або дорівнює 25
- Поле «підбирання» має значення менше 8
Примітка . Ви можете знайти повну документацію для функції $or тут .
Додаткові ресурси
У наступних посібниках пояснюється, як виконувати інші типові операції в MongoDB:
MongoDB: Як використовувати оператор AND у запитах
MongoDB: як перевірити, чи поле містить рядок
MongoDB: як використовувати запит «NO IN».
MongoDB: як шукати «not null» у певному полі