MongoDB 4.4 ha introdotto nove nuovi operatori di pipeline di aggregazione, inclusi due nuovi operatori per trovare e sostituire una sottostringa.
I due nuovi operatori che consentono di trovare e sostituire una sottostringa sono $replaceOne
e $replaceAll
operatori.
Ecco cosa fa ogni operatore:
Operatore | Descrizione |
---|---|
$replaceOne | Sostituisce la prima istanza di una stringa di ricerca in una stringa di input con una stringa di sostituzione. |
$replaceAll | Sostituisce tutte le istanze di una stringa di ricerca in una stringa di input con una stringa di sostituzione. |
L'unica differenza tra questi operatori è che $replaceOne
sostituisce il primo istanza della sottostringa, mentre $replaceAll
sostituisce tutti istanze della sottostringa.
Il $replaceOne
Operatore
Supponiamo di avere una collezione chiamata products
con il seguente documento:
{ "_id" : 1, "product" : "Left Handed Screwdriver with Left Handed Carry Case" }
Possiamo usare il $replaceOne
per sostituire la prima istanza della sottostringa Left Handed
con un'altra stringa:
db.products.aggregate([
{
$project:
{
product: { $replaceOne: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Risultato:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Left Handed Carry Case" }
Nota che in realtà ci sono due istanze della sottostringa (Left Handed
) ma solo la prima istanza è stata sostituita.
Il $replaceAll
Operatore
Nell'esempio precedente, abbiamo sostituito la prima istanza della sottostringa.
Ora usiamo il $replaceAll
operatore per sostituire tutti istanze della sottostringa:
db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Risultato:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case" }
Questa volta entrambe le istanze della sottostringa (Left Handed
) sono stati sostituiti.