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.