Вы можете использовать следующие методы, чтобы найти длину строки в MongoDB и использовать эту длину строки в запросах:
Способ 1: найти длину строки
db.myCollection.aggregate([
{ $project : {
"name": 1,
"length": { $strLenCP : " $name " }
}}
])
Способ 2: найти документы со строкой больше определенной длины
db.myCollection.find({
"name": { $exists : true },
$expr : { $gt : [ { $strLenCP : " $name " }, 14 ] }
})
В следующих примерах показано, как использовать каждый метод с набором команд со следующими документами:
db.teams.insertOne({name: " Dallas Mavs", points: 31})
db.teams.insertOne({name: " San Antonio Spurs", points: 22})
db.teams.insertOne({name: " Houston Rockets", points: 19})
db.teams.insertOne({name: " Boston Celtics", points: 26})
db.teams.insertOne({name: " Cleveland Cavs", points: 33})
Пример 1: найти длину строки
Мы можем использовать следующий код для вычисления длины строки в поле «имя» каждого документа:
db.teams.aggregate([
{ $project : {
"name": 1,
"length": { $strLenCP : " $name " }
}}
])
Этот код возвращает следующие результаты:
{ _id: ObjectId("62014eff4cb04b772fd7a93d"),
name: 'Dallas Mavs',
length: 11 }
{ _id: ObjectId("62014eff4cb04b772fd7a93e"),
name: 'San Antonio Spurs',
length: 17 }
{ _id: ObjectId("62014eff4cb04b772fd7a93f"),
name: 'Houston Rockets',
length: 15 }
{ _id: ObjectId("62014eff4cb04b772fd7a940"),
name: 'Boston Celtics',
length: 14 }
{ _id: ObjectId("62014eff4cb04b772fd7a941"),
name: 'Cleveland Cavs',
length: 14 }
Значение длины отображает длину строки в столбце «имя».
Например:
- Длина строки 'Dallas Mavs' равна 11 .
- Длина строки «Сан-Антонио Спёрс» равна 17 .
И так далее.
Обратите внимание, что длина также учитывает пробелы.
Пример 2. Поиск документов со строкой большей длины, чем определенная
Мы можем использовать следующий код для возврата только тех документов, в которых строка в столбце «имя» больше 14 :
db.teams.find({
"name": { $exists : true },
$expr : { $gt : [ { $strLenCP : " $name " }, 14 ] }
})
Этот запрос возвращает следующие результаты:
{ _id: ObjectId("62014eff4cb04b772fd7a93e"),
name: 'San Antonio Spurs',
points: 22 }
{ _id: ObjectId("62014eff4cb04b772fd7a93f"),
name: 'Houston Rockets',
points: 19 }
Обратите внимание, что возвращаются только две команды, в которых длина поля «имя» превышает 14 .
Примечание.Полную документацию по функции $strLenCP можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:
MongoDB: как разбить строку на массив подстрок
MongoDB: как объединить строки из двух полей
MongoDB: как заменить строки в