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: Як замінити рядки в

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *