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' }

Обратите внимание, что первые четыре символа поля «месяцгод» каждого документа отображаются в новом поле с надписью «год».

Важно отметить, что этот код отображает только подстроку.

Чтобы фактически добавить новое поле в коллекцию, содержащую эту подстроку, нам нужно использовать функцию $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: как заменить строки

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

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