Spouští se Mongo 4.2
, db.collection.update()
může přijmout agregační kanál, což konečně umožňuje aktualizaci pole na základě jeho aktuální hodnoty:
// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
První část
{}
je vyhledávací dotaz, který filtruje, které dokumenty se mají aktualizovat (v tomto případě všechny dokumenty). -
Druhá část
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]
je kanál agregace aktualizací (všimněte si hranatých závorek označujících použití kanálu agregace).$set
(alias$addFields
) je nový agregační operátor, který v tomto případě nahrazuje hodnotu pole (zřetězeníma
sám s příponou"World"
). Všimněte si, jaka
se upravuje přímo na základě své vlastní hodnoty ($a
). -
Nezapomeňte
{ multi: true }
, jinak bude aktualizován pouze první odpovídající dokument.