如果一个字段不存在,Mongodb将添加多个文档

如果一个字段不存在,Mongodb将添加多个文档,mongodb,Mongodb,我有一些文档要添加到我的收藏中 我想在一个动作中添加数组中的所有对象,当我有一个存在的对象时,我想替换它 {"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":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"}
有没有办法不发送很多更新操作就可以做到这一点

您可以使用进行以下操作:

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);

请张贴您尝试过的内容