Mongodb: come dividere una stringa in un array di sottostringhe


È possibile utilizzare la seguente sintassi per dividere una stringa in un array di sottostringhe in MongoDB:

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

Questo particolare esempio divide la stringa “field1” in base agli spazi in un nuovo campo denominato “split_field” e aggiunge il nuovo campo alla raccolta denominata myCollection .

L’esempio seguente mostra come utilizzare nella pratica questa sintassi con un team di recupero crediti con i seguenti documenti:

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

Esempio: dividere una stringa in un array di sottostringhe in MongoDB

Possiamo utilizzare il seguente codice per dividere la stringa nella colonna “name” in un array di stringhe e visualizzare i risultati in un nuovo campo denominato “split_name” nella raccolta team :

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

Ecco come appare ora la raccolta aggiornata:

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

Tieni presente che ogni documento ha un nuovo campo chiamato “split_name” che contiene un array di sottostringhe del campo “name”.

Per questo esempio particolare, abbiamo scelto di dividere la stringa originale utilizzando uno spazio vuoto come delimitatore.

Se la stringa è separata da un delimitatore diverso (come un trattino, una barra, due punti, ecc.), utilizza semplicemente quel delimitatore nella funzione $split .

Nota : puoi trovare la documentazione completa per la funzione $split qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in MongoDB:

MongoDB: come verificare se il campo contiene una stringa
MongoDB: come aggiungere un nuovo campo
MongoDB: come eliminare un campo

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *