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: как заменить строки в

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *