Starter Mongo 4.2
, db.collection.update()
kan acceptere en aggregeringspipeline og endelig tillade opdatering af et felt baseret på dets aktuelle værdi:
// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
Den første del
{}
er matchforespørgslen, der filtrerer, hvilke dokumenter der skal opdateres (i dette tilfælde alle dokumenter). -
Den anden del
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]
er opdaterings-aggregeringspipeline (bemærk de firkantede parenteser, der angiver brugen af en aggregeringspipeline).$set
(alias for$addFields
) er en ny aggregeringsoperator, som i dette tilfælde erstatter feltets værdi (ved at sammenkædea
sig selv med suffikset"World"
). Bemærk hvordana
er modificeret direkte baseret på sin egen værdi ($a
). -
Glem ikke
{ multi: true }
, ellers vil kun det første matchende dokument blive opdateret.