Rethinkdb 什么';使用'的功能差异是什么;更换';vs';更新';数据库中的冲突解决

Rethinkdb 什么';使用'的功能差异是什么;更换';vs';更新';数据库中的冲突解决,rethinkdb,Rethinkdb,当试图插入(基于主键的)已存在的文档时,RejectDB的操作有两种冲突解决模式。i、 e: 可能的值为“错误”、“替换”或“更新”。 “错误”:不要插入新文档并将冲突记录为错误。这是默认设置。 “替换”:将旧文档全部替换为新文档。 “更新”:使用新文档中的字段更新旧文档的字段 虽然我很清楚“替换”和“更新”之间的技术区别,但我很好奇这两者之间的功能区别(如果有的话) 例如,当插入的文档与已经存在的文档完全相同时,我认为这两种情况中的一种可能不会导致changefeed上的事件,但情况似乎并非如

当试图插入(基于主键的)已存在的文档时,RejectDB的操作有两种冲突解决模式。i、 e:

可能的值为“错误”、“替换”或“更新”。 “错误”:不要插入新文档并将冲突记录为错误。这是默认设置。 “替换”:将旧文档全部替换为新文档。 “更新”:使用新文档中的字段更新旧文档的字段

虽然我很清楚“替换”和“更新”之间的技术区别,但我很好奇这两者之间的功能区别(如果有的话)

例如,当插入的文档与已经存在的文档完全相同时,我认为这两种情况中的一种可能不会导致changefeed上的事件,但情况似乎并非如此


那么,这两个选项在功能上有什么不同呢?

替换将替换整个文档(并可能删除字段),
更新将只更新字段,而不会删除字段

如果您的文档是{id:1,foo:“hello”,bar:“world”}

r.table('data').get(1).update({foo: "bonjour"})
// -> {id: 1, foo: "bonjour", bar: "world"}

r.table('data').get(1).replace({id: 1, foo: "bonjour"})
// -> {id: 1, foo: "bonjour"}