Mongodb: как проверить, содержит ли поле строку


Вы можете использовать следующий синтаксис в MongoDB, чтобы проверить, содержит ли определенное поле определенную строку:

 db.collection.findOne({ name : { $regex : /string/ }})

В следующих примерах показано, как использовать этот синтаксис с командой по сбору коллекций со следующими документами:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

Пример 1. Проверьте, содержит ли поле строку

Мы можем использовать следующий код, чтобы проверить, существует ли документ, содержащий строку «avs» в поле команды:

 db.teams.findOne({ team : { $regex : /avs/ }}) 

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

 { _id: ObjectId("618050098ffcfe76d07b1da5"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

Обратите внимание, что функция findOne() возвращает первый документ в коллекции, соответствующий критериям запроса.

Это означает, что другие команды также могут иметь строку «avs» в названии своей команды, но документ, содержащий название команды «Mavs», был просто первым.

Пример 2. Проверьте, содержит ли поле строку (без учета регистра).

Мы также можем использовать i после строки, чтобы обеспечить совпадение без учета регистра .

Например, предположим, что мы используем следующий запрос:

 db.teams.findOne({ team : { $regex : /AVS/i }}) 

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

 { _id: ObjectId("618050098ffcfe76d07b1da5"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

Пример 3. Проверьте, содержит ли поле строку (результатов нет).

Если поле не содержит конкретной строки, которую мы ищем, мы просто получим значение null соответственно.

Например, предположим, что мы используем следующий запрос:

 db.teams.findOne({ team : { $regex : /ricks/ }})

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

 null

Поскольку ни один документ не содержит в названии команды строки «ricks», в результате мы получаем null .

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

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

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

MongoDB: как искать «не ноль» в определенном поле
MongoDB: как делать запросы с помощью регулярного выражения «Мне нравится»
MongoDB: как добавить новое поле в коллекцию
MongoDB: как удалить поле из каждого документа

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

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