Mongodb: як використовувати оператор and ($and) у запитах


Ви можете використовувати оператор $and у MongoDB для пошуку документів, які відповідають багатьом критеріям.

Цей оператор використовує наступний базовий синтаксис:

 db.myCollection.find({
  " $and ": [
    {" 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: 30, 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» більше або дорівнює 22:

 db.teams.find({
  " $and ": [
    {" team ": " Spurs "},
    {" points ": { $gte : 22 }}
  ]
})

Цей запит повертає такі документи:

 { _id: ObjectId("6201824afd435937399d6b6c"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("6201824afd435937399d6b6d"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 }

Зауважте, що кожен документ у вихідних даних містить «Шпори» в полі «Команда» та значення, що перевищує або дорівнює 22 у полі «очки».

Приклад 2. Використовуйте оператор І з більш ніж двома полями

Наступний код показує, як знайти всі документи в колекції teams , де поле «team» не дорівнює «Mavs», а значення в полі «points» більше або дорівнює 22, а значення в полі «rebounds» » поле менше 7:

 db.teams.find({
  " $and ": [
    {" team ": { $ne : " Mavs "}},
    {" points ": { $gte : 22 }},
    {" rebounds ": { $lt : 7 }}
  ]
})

Цей запит повертає такий документ:

 { _id: ObjectId("6201824afd435937399d6b6c"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

Зверніть увагу, що це єдиний документ у колекції, який відповідає всім трьом критеріям:

  • Поле «Команда» не дорівнює « Мавс »
  • Поле «балів» має значення більше або дорівнює 22
  • Поле «підбирання» має значення менше 7

Примітка . Ви можете знайти повну документацію для функції $and тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в MongoDB:

MongoDB: як перевірити, чи поле містить рядок
MongoDB: як використовувати запит «NO IN».
MongoDB: як шукати «not null» у певному полі

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *