Mongodb: como usar a função $susbtr


Você pode usar a função $substr no MongoDB para extrair uma substring de uma string.

Esta função usa a seguinte sintaxe básica:

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

Este exemplo específico extrai todos os quatro caracteres do campo denominado “fullString” começando na posição 0.

O exemplo a seguir mostra como usar essa sintaxe na prática com uma venda de cobrança com os seguintes documentos:

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

Exemplo: como usar a função $susbtr no MongoDB

Podemos usar o código a seguir para extrair os primeiros quatro caracteres do campo “yearMonth” e exibi-los em um novo campo chamado “year”:

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

Este código produz o seguinte resultado:

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

Observe que os primeiros quatro caracteres do campo “mêsAno” de cada documento são exibidos em um novo campo denominado “ano”.

É importante observar que este código exibe apenas a substring.

Para realmente adicionar um novo campo à coleção que contém esta substring, precisamos usar a função $merge da seguinte forma:

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

Esta é a aparência da coleção atualizada agora:

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

Observe que o novo campo intitulado “ano” foi adicionado a cada documento da coleção e exibe os primeiros quatro caracteres do campo “anoMês”.

Nota : Você pode encontrar a documentação completa da função $substr aqui .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns no MongoDB:

MongoDB: Como verificar se o campo contém uma string
MongoDB: Como concatenar strings de dois campos
MongoDB: Como substituir strings

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *