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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.