MongoDB 4.4 introduceerde negen nieuwe aggregatiepijplijnoperators, waaronder twee nieuwe operators voor het vinden en vervangen van een substring.
De twee nieuwe operators waarmee u een subtekenreeks kunt vinden en vervangen, zijn de $replaceOne en $replaceAll operators.
Dit is wat elke operator doet:
| Operator | Beschrijving |
|---|---|
$replaceOne | Vervangt de eerste instantie van een zoekstring in een invoerstring door een vervangende string. |
$replaceAll | Vervangt alle instanties van een zoekstring in een invoerstring door een vervangende string. |
Het enige verschil tussen deze operators is dat $replaceOne vervangt de eerste instantie van de substring, terwijl $replaceAll vervangt alle instanties van de subtekenreeks.
De $replaceOne Operator
Stel dat we een verzameling hebben met de naam products met het volgende document:
{
"_id" : 1,
"product" : "Left Handed Screwdriver with Left Handed Carry Case"
}
We kunnen de $replaceOne . gebruiken operator om de eerste instantie van de substring Left Handed te vervangen met een andere string:
db.products.aggregate([
{
$project:
{
product: { $replaceOne: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty() Resultaat:
{
"_id" : 1,
"product" : "Ambidextrous Screwdriver with Left Handed Carry Case"
}
Merk op dat er eigenlijk twee instanties zijn van de substring (Left Handed ) maar alleen het eerste exemplaar werd vervangen.
De $replaceAll Operator
In het vorige voorbeeld hebben we de eerste instantie van de substring vervangen.
Laten we nu de $replaceAll . gebruiken operator om alle te vervangen instanties van de subtekenreeks:
db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty() Resultaat:
{
"_id" : 1,
"product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case"
}
Deze keer beide instanties van de substring (Left Handed ) zijn vervangen.