Iniciando o
Mongo 4.2
, db.collection.update()
pode aceitar um pipeline de agregação, permitindo finalmente a atualização de um campo com base em seu valor atual:// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
A primeira parte{}
é a consulta de correspondência, filtrando quais documentos atualizar (neste caso, todos os documentos).
-
A segunda parte[{ $set: { a: { $concat: [ "$a", "World" ] } } }]
é o pipeline de agregação de atualização (observe os colchetes que significam o uso de um pipeline de agregação).$set
(alias de$addFields
) é um novo operador de agregação que neste caso substitui o valor do campo (concatenandoa
com o sufixo"World"
). Observe comoa
é modificado diretamente com base em seu próprio valor ($a
).
-
Não se esqueça de{ multi: true }
, caso contrário, apenas o primeiro documento correspondente será atualizado.