Стартиране на Mongo 4.2 , db.collection.update() може да приеме конвейер за агрегиране, като накрая позволява актуализирането на поле въз основа на текущата му стойност:
// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
Първата част
{}е заявката за съвпадение, която филтрира кои документи да се актуализират (в този случай всички документи). -
Втората част
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]е тръбопроводът за обновяване на агрегиране (обърнете внимание на квадратните скоби, означаващи използването на конвейер за агрегиране).$set(псевдоним на$addFields) е нов оператор за агрегиране, който в този случай замества стойността на полето (чрез конкатениране наaсебе си с наставката"World"). Обърнете внимание какaсе променя директно въз основа на собствената си стойност ($a). -
Не забравяйте
{ multi: true }, в противен случай само първият съответстващ документ ще бъде актуализиран.