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.