本当に欲しいのは bulkWrite()
2つの"updateMany"
を使用する 代わりにその中のステートメント。集計式を使用して、どの形式の更新ステートメントでも「代替選択」を実行することはできません。
db.country.bulkWrite([
{ "updateMany": {
"filter": { "pop": { "$lt": 20000000 } },
"update": { "$set": { "country": "Small Country" } }
}},
{ "updateMany": {
"filter": { "pop": { "$gt": 20000000 } },
"update": { "$set": { "country": "Large Country" } }
}}
])
SERVER-6566 にはまだ未解決の「機能リクエスト」があります 「条件付き構文」の場合ですが、これはまだ解決されていません。 「バルク」APIは、このリクエストが発生した後に実際に導入されたものであり、実際に適応することができます。 多かれ少なかれ 同じことです。
$ out
も使用します
他の方法で提案された集計ステートメントでは、"更新"のオプションではありません。 現在、「新しいコレクション」にしか書き込むことができません。 MongoDB 4.2以降の予定されている変更により、 $ out コード>
実際に"更新" 既存のコレクション、ただし これは、更新されるコレクションが、集約パイプラインからのデータの収集内で使用される他のコレクションと異なる場合にのみ発生します。したがって、不可能 集約パイプラインを使用して同じを更新する コレクション あなたが読んでいるものとして。
つまり、 bulkWrite()
。