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