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


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

Способ 1: найти документы, содержащие строку

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

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

Способ 2: найти документы, начинающиеся со строки

db.collection.find({ name : { $regex : /^string/i }})

Способ 3: найти документы, оканчивающиеся на строку

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

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

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.find({ team : { $regex : /avs/i }})

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

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

{ _id: ObjectId("618285361a42e92ac9ccd2c6"),
 team: 'Cavs',
 position: 'Guard',
 points: 33 }

Пример 2: найти документы, начинающиеся со строки

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

db.teams.find({ position : { $regex : /^gua/i }})

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

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

{ _id: ObjectId("6180504e8ffcfe76d07b1da7"),
 team: 'Spurs',
 position: 'Guard',
 points: 22 }

{ _id: ObjectId("618285361a42e92ac9ccd2c6"),
 team: 'Cavs',
 position: 'Guard',
 points: 33 }

Пример 3. Поиск документов, оканчивающихся на строку

Мы можем использовать следующий код, чтобы найти все документы, оканчивающиеся на строку 'ward' в поле position:

db.teams.find({ position : { $regex : /ward$/i }})

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

{ _id: ObjectId("618050808ffcfe76d07b1dab"),
 team: 'Warriors',
 position: 'Forward',
 points: 26 }

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