有没有办法在MongoDB中将文档上的哈希字段与upsert上的新哈希合并?

时间:2017-05-17 21:09:16

标签: mongodb upsert

假设我有一个包含字段values的字段{a: 1, b: 2, c: 3}的MongoDB文档。然后,我继续在values: {c: 4, d: 5}

中插入此文档的新版本

我想要找到的方法是让Mongo合并哈希边的哈希,而不必首先下载文档的先前版本。即upsert之后生成的文档应该有values: {a: 1, b: 2, c: 4, d: 5}

目前可以通过提供自定义冲突解决方案lambda函数在RethinkDB中执行此操作,该函数处理old_doc + new_doc的合并。 (https://www.rethinkdb.com/api/ruby/insert/

是否有可能在Mongo中复制它?

1 个答案:

答案 0 :(得分:0)

您可以将findOneAndUpdate与$ set opeartor一起使用。所以你会像这样编写你的查询

 db.<collection_name>.findOneAndUpdate(
 {_id: <id of the doc>}, 
 {$set: {"values.c": 4, "values.d": 5}})

这是我测试的一个例子

  db.users.findOneAndUpdate(
  {_id: ObjectId("591cd8641c02e094596479ea")}, 
  {$set: {"values.c": 4, "values.d": 5}})