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


Вы можете использовать оператор $and в MongoDB для запроса документов, соответствующих нескольким критериям.

Этот оператор использует следующий базовый синтаксис:

db.myCollection.find({
 " $and ": [
 {" field1 ": " hello "},
 {" field2 ": { $gte : 10 }}
 ]
})

Этот конкретный пример находит все документы в коллекции под названием myCollection, где field1 равно «hello», а field2 имеет значение больше или равное 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. Использование оператора AND с двумя полями

Следующий код показывает, как найти все документы в коллекции 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. Использование оператора AND с более чем двумя полями

В следующем коде показано, как найти все документы в коллекции team , где поле «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 }

Обратите внимание, что это единственный документ в коллекции, который соответствует каждому из трех критериев:

  • Поле «команда» не равно « Mavs »
  • Поле «баллы» имеет значение больше или равное 22
  • Поле «Подборы» имеет значение меньше 7

Примечание.Полную документацию по функции $and можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:

MongoDB: как проверить, содержит ли поле строку
MongoDB: как использовать запрос «НЕ В»
MongoDB: как запросить «не нуль» в определенном поле