MongoDB 4.4 introdujo nueve nuevos operadores de canalización de agregación, incluidos dos nuevos operadores para buscar y reemplazar una subcadena.
Los dos nuevos operadores que le permiten buscar y reemplazar una subcadena son $replaceOne
y $replaceAll
operadores.
Esto es lo que hace cada operador:
Operador | Descripción |
---|---|
$replaceOne | Reemplaza la primera instancia de una cadena de búsqueda en una cadena de entrada con una cadena de reemplazo. |
$replaceAll | Reemplaza todas las instancias de una cadena de búsqueda en una cadena de entrada con una cadena de reemplazo. |
La única diferencia entre estos operadores es que $replaceOne
reemplaza al primero instancia de la subcadena, mientras que $replaceAll
reemplaza a todos instancias de la subcadena.
El $replaceOne
Operador
Supongamos que tenemos una colección llamada products
con el siguiente documento:
{ "_id" : 1, "product" : "Left Handed Screwdriver with Left Handed Carry Case" }
Podemos usar el $replaceOne
operador para reemplazar la primera instancia de la subcadena Left Handed
con otra cadena:
db.products.aggregate([
{
$project:
{
product: { $replaceOne: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Resultado:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Left Handed Carry Case" }
Observe que en realidad hay dos instancias de la subcadena (Left Handed
) pero solo se reemplazó la primera instancia.
El $replaceAll
Operador
En el ejemplo anterior, reemplazamos la primera instancia de la subcadena.
Ahora usemos el $replaceAll
operador para reemplazar todos instancias de la subcadena:
db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Resultado:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case" }
Esta vez ambas instancias de la subcadena (Left Handed
) fueron reemplazados.