A partire da Mongo 4.2 , db.collection.update() può accettare una pipeline di aggregazione, consentendo infine l'aggiornamento di un campo in base al suo valore corrente:
// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
La prima parte
{}è la query di corrispondenza, che filtra quali documenti aggiornare (in questo caso tutti i documenti). -
La seconda parte
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]è la pipeline di aggregazione degli aggiornamenti (notare le parentesi quadre che indicano l'uso di una pipeline di aggregazione).$set(alias di$addFields) è un nuovo operatore di aggregazione che in questo caso sostituisce il valore del campo (concatenandoastesso con il suffisso"World"). Nota comeaviene modificato direttamente in base al proprio valore ($a). -
Non dimenticare
{ multi: true }, altrimenti verrà aggiornato solo il primo documento corrispondente.