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.