Mongo 4.2
を開始 、db.collection.update()
集約パイプラインを受け入れることができ、最終的に別のフィールドに基づくフィールドの更新/作成を許可します:
// { a: "Hello", b: "World" }
// { a: "Olleh", b: "Dlrow" }
db.collection.update(
{},
[ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ],
{ multi: true }
)
// { a: "Hello", b: "World", active: true }
// { a: "Olleh", b: "Dlrow", active: false }
-
最初の部分
{}
一致クエリであり、更新するドキュメント(この場合はすべてのドキュメント)をフィルタリングします。 -
2番目の部分
[ { $set: { active: { $eq: [ "$a", "Hello" ] } } } ]
は更新アグリゲーションパイプラインです(アグリゲーションパイプラインの使用を示す角かっこに注意してください)。$set
は新しい集計演算子であり、$addFields
のエイリアスです。 。次に、$set
内で任意の集計演算子を使用できます ステージ;この場合、新しいactive
に使用する値に依存する条件付き等価性チェック フィールド。 -
{ multi: true }
を忘れないでください それ以外の場合は、最初に一致するドキュメントのみが更新されます。