O MongoDB 4.4 introduziu nove novos operadores de pipeline de agregação, incluindo dois novos operadores para localizar e substituir uma substring.
Os dois novos operadores que permitem localizar e substituir uma substring são o
$replaceOne
e $replaceAll
operadores. Veja o que cada operador faz:
Operador | Descrição |
---|---|
$replaceOne | Substitui a primeira instância de uma string de pesquisa em uma string de entrada por uma string de substituição. |
$replaceAll | Substitui todas as instâncias de uma string de pesquisa em uma string de entrada por uma string de substituição. |
A única diferença entre esses operadores é que
$replaceOne
substitui o primeiro instância da substring, enquanto $replaceAll
substitui todos instâncias da substring. O $replaceOne
Operador
Suponha que tenhamos uma coleção chamada
products
com o seguinte documento:{ "_id" : 1, "product" : "Left Handed Screwdriver with Left Handed Carry Case" }
Podemos usar o
$replaceOne
operador para substituir a primeira instância da substring Left Handed
com outra string: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 na verdade existem duas instâncias da substring (
Left Handed
), mas apenas a primeira instância foi substituída. O $replaceAll
Operador
No exemplo anterior, substituímos a primeira instância da substring.
Agora vamos usar o
$replaceAll
operador para substituir todos instâncias da substring:db.products.aggregate([
{
$project:
{
product: { $replaceAll: { input: "$product", find: "Left Handed", replacement: "Ambidextrous" } }
}
}
]).pretty()
Resultado:
{ "_id" : 1, "product" : "Ambidextrous Screwdriver with Ambidextrous Carry Case" }
Desta vez, ambas as instâncias da substring (
Left Handed
) foram substituídos.