如果一个字段不存在,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":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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

更新一个字段或插入多个(如果不存在)

需要一个字段,如果另一个不存在

使用Django / Postgres获取一个计算字段,如果不存在另一个字段值,则该字段将获取一个字段值

MongoDB Aggregate在文档中添加一个新字段(如果已存在另一个字段)

Firestore云功能在一个字段中添加多个字段

如何查找一个字段(产品)中存在值但另一字段(companyName)中不存在值的文档...

如果行ID不存在,则返回一个字符串

mongodb mongoose-如果字段不存在,如何将文档添加到数组

如何在Django模型的一个字段中添加多个输入

将一个文档添加到集合中,该文档是MongoDB中一个字段的累积

如何将一个数组字段的长度添加到Mongodb文档中的另一个字段中

如何使用php在MongoDB文档中添加一个字段?

您可以在一个字符串中添加多少个字符x,以使该字符串中不存在三个连续的字符?

MySQL查询-即使相关表中不存在一个字段,也要返回咨询

如果 MongoDB 中不存在则创建文档并以原子方式向其添加字段

如果不存在字段,则更新MongoDB文档

mongodb在从另一个字段派生的所有文档中添加字段

如果Mongo中的文档不存在,请添加字段

在每个文档中添加一个新字段,并在mongodb中为同一文档的另一个字段赋值

Mongodb更新多个文档,如果不存在则插入

如果MongoDB和Mongoose存在另一个匹配的文档,请添加字段

Jest:模拟一个字符串属性不存在

MongoDB:将多个字段分组为每个用户的一个文档

Python从CSV文件在一个字典中添加多个数据点

如果在发送的对象中不存在一个字段,则它失败,并显示以下错误“ [parsing_exception]没有为文本查询指定文本”

MongoDB将ObjectId从一个字段移动到另一个字段

SQL,如果另一个表中不存在该字段,则选择字段

添加新字段,它是文档中另一个字段的大小

如果存在字段,则取下一个字段