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: визначення довжини рядка
Ми можемо використати такий код, щоб обчислити довжину рядка в полі «name» кожного документа:
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 .
І так далі.
Зверніть увагу, що довжина також враховує порожні місця.
Приклад 2: пошук документів, рядок яких перевищує певну довжину
Ми можемо використати наступний код, щоб повернути лише документи, рядок яких у стовпці “name” перевищує 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: Як замінити рядки в