Startar Mongo 4.2 , db.collection.update() kan acceptera en aggregeringspipeline, vilket slutligen tillåter uppdatering av ett fält baserat på dess nuvarande värde:
// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
Den första delen
{}är matchningsfrågan som filtrerar vilka dokument som ska uppdateras (i detta fall alla dokument). -
Den andra delen
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]är uppdateringsaggregationspipeline (observera att hakparenteserna anger användningen av en aggregationspipeline).$set(alias för$addFields) är en ny aggregeringsoperator som i det här fallet ersätter fältets värde (genom att sammanfogaasig själv med suffixet"World"). Notera huramodifieras direkt baserat på sitt eget värde ($a). -
Glöm inte
{ multi: true }, annars kommer bara det första matchande dokumentet att uppdateras.