In MongoDB 4.4 wurden neun neue Aggregations-Pipeline-Operatoren eingeführt, darunter zwei neue Operatoren zum Suchen und Ersetzen einer Teilzeichenfolge.
Die beiden neuen Operatoren, mit denen Sie einen Teilstring suchen und ersetzen können, sind $replaceOne
und $replaceAll
Betreiber.
Hier ist, was jeder Operator tut:
Operator | Beschreibung |
---|---|
$replaceOne | Ersetzt das erste Vorkommen einer Suchzeichenfolge in einer Eingabezeichenfolge durch eine Ersatzzeichenfolge. |
$replaceAll | Ersetzt alle Instanzen einer Suchzeichenfolge in einer Eingabezeichenfolge durch eine Ersatzzeichenfolge. |
Der einzige Unterschied zwischen diesen Operatoren besteht darin, dass $replaceOne
ersetzt die erste Instanz der Teilzeichenfolge, während $replaceAll
ersetzt alle Instanzen der Teilzeichenfolge.
Der $replaceOne
Betreiber
Angenommen, wir haben eine Sammlung namens products
mit folgendem Dokument:
{ "_id" : 1, "product" : "Left Handed Screwdriver with Left Handed Carry Case" }
Wir können den $replaceOne
verwenden -Operator zum Ersetzen der ersten Instanz der Teilzeichenfolge Left Handed
mit einem anderen String:
db.products.aggregate([
{
$project:
{
product: { $replaceOne: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Ergebnis:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Left Handed Carry Case" }
Beachten Sie, dass es tatsächlich zwei Instanzen der Teilzeichenfolge gibt (Left Handed
), aber nur die erste Instanz wurde ersetzt.
Der $replaceAll
Betreiber
Im vorherigen Beispiel haben wir die erste Instanz des Teilstrings ersetzt.
Lassen Sie uns nun den $replaceAll
verwenden Operator, um alle zu ersetzen Instanzen der Teilzeichenfolge:
db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Ergebnis:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case" }
Dieses Mal sind beide Instanzen der Teilzeichenfolge (Left Handed
) wurden ersetzt.