Mongodb: як використовувати функцію $susbtr


Ви можете використовувати функцію $substr у MongoDB, щоб отримати підрядок із рядка.

Ця функція використовує такий базовий синтаксис:

 db.myCollection.aggregate([
  { $project : {substring: { $substr : [ " $fullstring ", 0, 4 ] }}}
])

У цьому конкретному прикладі витягуються всі чотири символи з поля з позначкою «fullString», починаючи з позиції 0.

У наведеному нижче прикладі показано, як використовувати цей синтаксис на практиці під час продажу колекції з такими документами:

 db.sales.insertOne({yearMonth: 201702, amount: 40 })
db.sales.insertOne({yearMonth: 201802, amount: 32 })
db.sales.insertOne({yearMonth: 201806, amount: 19 })
db.sales.insertOne({yearMonth: 201910, amount: 29 })
db.sales.insertOne({yearMonth: 201907, amount: 35 })

Приклад: як використовувати функцію $susbtr у MongoDB

Ми можемо використати наступний код, щоб отримати перші чотири символи з поля “yearMonth” і відобразити їх у новому полі під назвою “year”:

 db.sales.aggregate([
  { $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}}
])

Цей код дає такий результат:

 { _id: ObjectId("620145544cb04b772fd7a929"), year: '2017' }
{ _id: ObjectId("620145544cb04b772fd7a92a"), year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92b"), year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92c"), year: '2019' }
{ _id: ObjectId("620145544cb04b772fd7a92d"), year: '2019' }

Зверніть увагу, що перші чотири символи поля «monthYear» кожного документа відображаються в новому полі з позначкою «year».

Важливо зауважити, що цей код відображає лише підрядок.

Щоб фактично додати нове поле до колекції, яка містить цей підрядок, нам потрібно використати функцію $merge наступним чином:

 db.sales.aggregate([
  { $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}},
  { $merge : "sales" }
])

Ось так зараз виглядає оновлена колекція:

 { _id: ObjectId("620145544cb04b772fd7a929"),
  yearMonth: 201702,
  amount: 40,
  year: '2017' }
{ _id: ObjectId("620145544cb04b772fd7a92a"),
  yearMonth: 201802,
  amount: 32,
  year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92b"),
  yearMonth: 201806,
  amount: 19,
  year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92c"),
  yearMonth: 201910,
  amount: 29,
  year: '2019' }
{ _id: ObjectId("620145544cb04b772fd7a92d"),
  yearMonth: 201907,
  amount: 35,
  year: '2019' }

Зауважте, що нове поле під назвою «рік» було додано до кожного документа в колекції, і воно відображає перші чотири символи поля «рікМісяць».

Примітка . Ви можете знайти повну документацію для функції $substr тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в MongoDB:

MongoDB: як перевірити, чи поле містить рядок
MongoDB: як об’єднати рядки з двох полів
MongoDB: Як замінити рядки

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

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