Démarrage de Mongo 4.2
, db.collection.update()
peut accepter un pipeline d'agrégation, permettant enfin la mise à jour d'un champ en fonction de sa valeur actuelle :
// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
La première partie
{}
est la requête de correspondance, filtrant les documents à mettre à jour (dans ce cas, tous les documents). -
La deuxième partie
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]
est le pipeline d'agrégation de mise à jour (notez les crochets signifiant l'utilisation d'un pipeline d'agrégation).$set
(alias de$addFields
) est un nouvel opérateur d'agrégation qui dans ce cas remplace la valeur du champ (en concaténanta
lui-même avec le suffixe"World"
). Notez commenta
est modifié directement en fonction de sa propre valeur ($a
). -
N'oubliez pas
{ multi: true }
, sinon seul le premier document correspondant sera mis à jour.