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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *