MongoDB 4.4 introducerede ni nye aggregeringspipeline-operatører, inklusive to nye operatører til at finde og erstatte en understreng.
De to nye operatorer, der giver dig mulighed for at finde og erstatte en understreng, er $replaceOne
og $replaceAll
operatører.
Her er, hvad hver operatør gør:
Operator | Beskrivelse |
---|---|
$replaceOne | Erstatter den første forekomst af en søgestreng i en inputstreng med en erstatningsstreng. |
$replaceAll | Erstatter alle forekomster af en søgestreng i en inputstreng med en erstatningsstreng. |
Den eneste forskel mellem disse operatorer er, at $replaceOne
erstatter den første forekomst af understrengen, mens $replaceAll
erstatter alle forekomster af understrengen.
$replaceOne
Operatør
Antag, at vi har en samling kaldet products
med følgende dokument:
{ "_id" : 1, "product" : "Left Handed Screwdriver with Left Handed Carry Case" }
Vi kan bruge $replaceOne
operatør for at erstatte den første instans af understrengen Left Handed
med en anden streng:
db.products.aggregate([
{
$project:
{
product: { $replaceOne: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Resultat:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Left Handed Carry Case" }
Bemærk, at der faktisk er to forekomster af understrengen (Left Handed
), men kun den første instans blev erstattet.
$replaceAll
Operatør
I det foregående eksempel erstattede vi den første forekomst af understrengen.
Lad os nu bruge $replaceAll
operatør for at erstatte alle forekomster af understrengen:
db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Resultat:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case" }
Denne gang begge forekomster af understrengen (Left Handed
) blev erstattet.