Iniciando Mongo 4.2
, db.collection.update()
puede aceptar una canalización de agregación, lo que finalmente permite la actualización de un campo en función de su valor actual:
// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
La primera parte
{}
es la consulta de coincidencia, filtrando qué documentos actualizar (en este caso, todos los documentos). -
La segunda parte
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]
es la canalización de agregación de actualizaciones (tenga en cuenta los corchetes que indican el uso de una canalización de agregación).$set
(alias de$addFields
) es un nuevo operador de agregación que en este caso reemplaza el valor del campo (al concatenara
sí mismo con el sufijo"World"
). Observe cómoa
se modifica directamente en función de su propio valor ($a
). -
No olvides
{ multi: true }
, de lo contrario, solo se actualizará el primer documento coincidente.