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: как удалить поле из каждого документа