Mongo 4.2を開始 、db.collection.update() 集約パイプラインを受け入れることができ、最終的に現在の値に基づいてフィールドを更新できるようになります:
// { a: "Hello" }
db.collection.update(
{},
[{ $set: { a: { $concat: [ "$a", "World" ] } } }],
{ multi: true }
)
// { a: "HelloWorld" }
-
最初の部分
{}一致クエリであり、更新するドキュメント(この場合はすべてのドキュメント)をフィルタリングします。 -
2番目の部分
[{ $set: { a: { $concat: [ "$a", "World" ] } } }]は更新アグリゲーションパイプラインです(アグリゲーションパイプラインの使用を示す角かっこに注意してください)。$set($addFieldsのエイリアス )は新しい集計演算子であり、この場合はフィールドの値を置き換えます(aを連結することにより) 接尾辞"World"が付いたそれ自体 )。aに注意してください 独自の値($a)に基づいて直接変更されます 。 -
{ multi: true }を忘れないでください それ以外の場合は、最初に一致するドキュメントのみが更新されます。