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 concatenarasí mismo con el sufijo"World"). Observe cómoase modifica directamente en función de su propio valor ($a). -
No olvides
{ multi: true }, de lo contrario, solo se actualizará el primer documento coincidente.