0
.updateMany(フィルター、更新、オプション)を使用する場合。どのようにすべてのドキュメントの動的フィルタフィールドを設定できますか?MongoDB updateMany、動的フィルターフィールド
[
{
time: 1,
data: []
},
{
time: 2,
data: []
},
{
time: 3,
data: []
}
]
それぞれ独自のタイムスタンプを持つ:
は、私はこのような文書の配列を持っています。タイムスタンプがすでに存在する場合は、対応する文書を新しいデータで更新する必要がありますが、時間が存在しない場合は、新しい文書を作成してください。
https://docs.mongodb.com/manual/reference/method/db.collection.updateMany/
しかし、それは思えるよう、.updateManyは()のみ静的フィルタフィールドを可能にします。この
Candles.updateMany({time: 'someStaticTime'}, documents);
と同じように、私はこの
Candles.updateMany({time: $currentInsertingDocument.time}, documents);
のようなものを好むだろうしながら、各文書の別々のをループなしで可能です。この??
あなたは何をしたいですか?私はそれは "時間が既に存在する場合、ドキュメントは更新する必要があります、それ以外の新しい時間を作成する"と私はそれは新しいタイムスタンプ、いいえにすべての時間フィールドを設定すると言ってストライクとして読む? –
質問を更新しました。そして確かに正しかった、その文書の配列、一意のインデックスキーは一意のタイムスタンプです。したがって、既に存在するタイムスタンプを持つドキュメントがある場合は、そのドキュメントを更新する必要があります。それ以外の場合は新しいドキュメントを作成します。しかし、動的フィールドとして時間フィールドをフィルタリングし、内部で – DutchKevv
私はあなたが 'バルク' APIを使うべきだと思います:https://docs.mongodb.com/manual/reference/method/Bulk.find.upsert/ – Michael