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.