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