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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.