假设我有一个包含字段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中复制它?
答案 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}})