Mongodb: как найти длину строки
Вы можете использовать следующие методы, чтобы найти длину строки в 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 }
Значение длины отображает длину строки в столбце «имя».
Например:
- Длина цепочки «Даллас Мэвс» — 11 .
- Длина цепочки «Сан-Антонио Сперс» составляет 17,7 фута .
И так далее.
Обратите внимание, что длина также учитывает пустые места.
Пример 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 }
Обратите внимание, что возвращаются только две команды, у которых поле «name» больше 14 .
Примечание . Полную документацию по функции $strLenCP можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:
MongoDB: как разбить строку на массив подстрок
MongoDB: как объединить строки двух полей
MongoDB: как заменить строки в