MongoDB 4.4 introducerade nio nya aggregeringspipeline-operatörer, inklusive två nya operatörer för att hitta och ersätta en delsträng.
De två nya operatorerna som låter dig hitta och ersätta en delsträng är $replaceOne
och $replaceAll
operatörer.
Så här gör varje operatör:
Operator | Beskrivning |
---|---|
$replaceOne | Ersätter den första instansen av en söksträng i en inmatningssträng med en ersättningssträng. |
$replaceAll | Ersätter alla instanser av en söksträng i en inmatningssträng med en ersättningssträng. |
Den enda skillnaden mellan dessa operatorer är att $replaceOne
ersätter den första instans av delsträngen, medan $replaceAll
ersätter alla instanser av delsträngen.
$replaceOne
Operatör
Anta att vi har en samling som heter products
med följande dokument:
{ "_id" : 1, "product" : "Left Handed Screwdriver with Left Handed Carry Case" }
Vi kan använda $replaceOne
operatorn för att ersätta den första instansen av delsträngen Left Handed
med en annan sträng:
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" }
Lägg märke till att det faktiskt finns två instanser av delsträngen (Left Handed
) men bara den första instansen ersattes.
$replaceAll
Operatör
I föregående exempel ersatte vi den första instansen av delsträngen.
Låt oss nu använda $replaceAll
operatör för att ersätta alla instanser av delsträngen:
db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Resultat:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case" }
Den här gången båda instanserna av delsträngen (Left Handed
) ersattes.