Mongodb: come utilizzare la funzione $susbtr
Puoi utilizzare la funzione $substr in MongoDB per estrarre una sottostringa da una stringa.
Questa funzione utilizza la seguente sintassi di base:
db.myCollection.aggregate([ { $project : {substring: { $substr : [ " $fullstring ", 0, 4 ] }}} ])
Questo particolare esempio estrae tutti e quattro i caratteri dal campo etichettato “fullString” a partire dalla posizione 0.
L’esempio seguente mostra come utilizzare nella pratica questa sintassi con una vendita in colletta con i seguenti documenti:
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 })
Esempio: come utilizzare la funzione $susbtr in MongoDB
Possiamo utilizzare il codice seguente per estrarre i primi quattro caratteri dal campo “yearMonth” e visualizzarli in un nuovo campo chiamato “year”:
db.sales.aggregate([ { $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}} ])
Questo codice produce il seguente risultato:
{ _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' }
Tieni presente che i primi quattro caratteri del campo “meseAnno” di ciascun documento vengono visualizzati in un nuovo campo denominato “anno”.
È importante notare che questo codice visualizza solo la sottostringa.
Per aggiungere effettivamente un nuovo campo alla raccolta che contiene questa sottostringa, dobbiamo utilizzare la funzione $merge come segue:
db.sales.aggregate([ { $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}}, { $merge : "sales" } ])
Ecco come appare ora la raccolta aggiornata:
{ _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' }
Tieni presente che il nuovo campo intitolato “anno” è stato aggiunto a ciascun documento della raccolta e visualizza i primi quattro caratteri del campo “annomese”.
Nota : puoi trovare la documentazione completa per la funzione $substr 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 concatenare stringhe di due campi
MongoDB: come sostituire le stringhe