Mongodb: como dividir uma string em um array de substrings


Você pode usar a seguinte sintaxe para dividir uma string em uma matriz de substrings no MongoDB:

 db.myCollection.aggregate([
  { $project : { split_field: { $split : [ " $field1 ", " " ] } } },
  { $merge : "myCollection" }
])

Este exemplo específico divide a string “field1” com base em espaços em um novo campo chamado “split_field” e adiciona o novo campo à coleção chamada myCollection .

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

 db.teams.insertOne({name: " Dallas Mavs ", points: 31})
db.teams.insertOne({name: " San Antonio Spurs ", points: 22})
db.teams.insertOne({name: " Houston Rockets ", points: 19})
db.teams.insertOne({name: " Boston Celtics ", points: 26})
db.teams.insertOne({name: " Cleveland Cavs ", points: 33})

Exemplo: dividir uma string em um array de substrings no MongoDB

Podemos usar o código a seguir para dividir a string na coluna “nome” em uma matriz de strings e exibir os resultados em um novo campo chamado “split_name” na coleção de equipes :

 db.teams.aggregate([
  { $project : { split_name: { $split : [ " $name ", " " ] } } },
  { $merge : "teams" }
])

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

 { _id: ObjectId("62014a924cb04b772fd7a938"),
  name: 'Dallas Mavs',
  points: 31,
  split_name: ['Dallas', 'Mavs'] }
{ _id: ObjectId("62014a924cb04b772fd7a939"),
  name: 'San Antonio Spurs',
  points: 22,
  split_name: ['San', 'Antonio', 'Spurs'] }
{ _id: ObjectId("62014a924cb04b772fd7a93a"),
  name: 'Houston Rockets',
  points: 19,
  split_name: ['Houston', 'Rockets'] }
{ _id: ObjectId("62014a924cb04b772fd7a93b"),
  name: 'Boston Celtics',
  points: 26,
  split_name: ['Boston', 'Celtics'] }
{ _id: ObjectId("62014a924cb04b772fd7a93c"),
  name: 'Cleveland Cavs',
  points: 33,
  split_name: ['Cleveland', 'Cavs'] }

Observe que cada documento possui um novo campo chamado “split_name” que contém uma matriz de substrings do campo “name”.

Para este exemplo específico, optamos por dividir a string original usando um espaço em branco como delimitador.

Se a string estiver separada por um delimitador diferente (como hífen, barra, dois pontos, etc.), basta usar esse delimitador na função $split .

Nota : Você pode encontrar a documentação completa da função $split 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 adicionar um novo campo
MongoDB: Como excluir um campo

Add a Comment

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