コレクションに追加したいドキュメントがいくつかあります。
配列内のすべてのオブジェクトを1回のアクションで追加したいのですが、何かが存在する場合はそれを置き換えたいと思います。
{"a":0, "b":0, "myKey": "aaaaaa"}
{"a":0, "b":0, "myKey": "hhhhhh"}
{"a":0, "b":0, "myKey": "oooooo"}
{"a":0, "b":0, "myKey": "mmmmmm"}
{"a":0, "b":0, "myKey": "eeeeee"}
myKeyがオブジェクトの一意のキーである場合、私のコレクションは次のようになります。
これらは、コレクションに追加したいドキュメントです。
[
{"a":1, "b":2, "myKey": "aaaaaa"},
{"a":2, "b":3, "myKey": "bbbbbb"},
{"a":3, "b":4, "myKey": "cccccc"},
{"a":4, "b":5, "myKey": "dddddd"},
{"a":6, "b":7, "myKey": "eeeeee"}
]
私のコレクションをこのように見せたい
{"a":1, "b":2, "myKey": "aaaaaa"}
{"a":0, "b":0, "myKey": "hhhhhh"}
{"a":0, "b":0, "myKey": "oooooo"}
{"a":0, "b":0, "myKey": "mmmmmm"}
{"a":6, "b":7, "myKey": "eeeeee"}
{"a":2, "b":3, "myKey": "bbbbbb"}
{"a":3, "b":4, "myKey": "cccccc"}
{"a":4, "b":5, "myKey": "dddddd"}
多くの更新アクションを送信せずにそれを行う方法はありますか?
bulkWrite
この操作には、次のように使用できます。
const array = [
{"a":1, "b":2, "myKey": "aaaaaa"},
{"a":2, "b":3, "myKey": "bbbbbb"},
{"a":3, "b":4, "myKey": "cccccc"},
{"a":4, "b":5, "myKey": "dddddd"},
{"a":6, "b":7, "myKey": "eeeeee"}
];
let ops = [];
array.forEach(({ a, b, myKey }) => {
ops.push({
"updateOne": {
"filter": { myKey },
"update": { "$set": { a, b, myKey } },
"upsert": true
}
})
});
db.collection.bulkWrite(ops);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加