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

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