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 (concatenandoa
stesso con il suffisso"World"
). Nota comea
viene modificato direttamente in base al proprio valore ($a
). -
Non dimenticare
{ multi: true }
, altrimenti verrà aggiornato solo il primo documento corrispondente.