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.