Mongodb: как использовать оператор and ($and) в запросах
Вы можете использовать оператор $and в MongoDB для поиска документов, соответствующих нескольким критериям.
Этот оператор использует следующий базовый синтаксис:
db.myCollection.find({ " $and ": [ {" field1 ": " hello "}, {" field2 ": { $gte : 10 }} ] })
В этом конкретном примере выполняется поиск всех документов в коллекции с именем myCollection , где поле1 равно «привет», а поле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. Использование оператора AND с двумя полями
Следующий код показывает, как найти все документы в коллекции команд , где поле «команда» равно «Шпорам», а значение поля «очки» больше или равно 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 с более чем двумя полями.
Следующий код показывает, как найти все документы в коллекции команд , где поле «команда» не равно «Mavs», а значение в поле «очки» больше или равно 22, а значение в поле «отскакивает». » поле меньше 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: как искать «не ноль» в определенном поле