MongoDB 4.4 představil devět nových operátorů agregačního kanálu, včetně dvou nových operátorů pro hledání a nahrazování podřetězce.
Dva nové operátory, které vám umožňují najít a nahradit podřetězec, jsou $replaceOne
a $replaceAll
operátory.
Každý operátor dělá toto:
Operátor | Popis |
---|---|
$replaceOne | Nahradí první výskyt hledaného řetězce ve vstupním řetězci náhradním řetězcem. |
$replaceAll | Nahradí všechny výskyty hledaného řetězce ve vstupním řetězci náhradním řetězcem. |
Jediný rozdíl mezi těmito operátory je, že $replaceOne
nahrazuje první instance podřetězce, zatímco $replaceAll
nahrazuje vše instance podřetězce.
$replaceOne
Operátor
Předpokládejme, že máme kolekci nazvanou products
s následujícím dokumentem:
{ "_id" : 1, "product" : "Left Handed Screwdriver with Left Handed Carry Case" }
Můžeme použít $replaceOne
operátor, který nahradí první výskyt podřetězce Left Handed
s jiným řetězcem:
db.products.aggregate([
{
$project:
{
product: { $replaceOne: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Výsledek:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Left Handed Carry Case" }
Všimněte si, že ve skutečnosti existují dva výskyty podřetězce (Left Handed
), ale nahrazena byla pouze první instance.
$replaceAll
Operátor
V předchozím příkladu jsme nahradili první instanci podřetězce.
Nyní použijeme $replaceAll
operátor, který nahradí vše instance podřetězce:
db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Výsledek:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case" }
Tentokrát oba výskyty podřetězce (Left Handed
) byly nahrazeny.