MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

2 Möglichkeiten zum Ersetzen einer Teilzeichenfolge in MongoDB

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.