在RethinkDB中使用“替换”与“更新”冲突解决方案的功能区别是什么

时间:2015-03-17 14:56:28

标签: rethinkdb

当尝试插入(基于主键)已存在的文档时,Rethinkdb的insert操作有两种解决冲突的模式。即:

  

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

虽然我清楚了解&替换'之间的技术差异。并且'更新'我很好奇两者之间的功能差异(如果有的话)。

例如,我想,当插入的doc与现有的doc完全相同时,两个中的一个可能不会导致更改事件中的事件,但这似乎不是案子。

那么,两个选项之间的功能差异是什么?

1 个答案:

答案 0 :(得分:3)

replace将替换整个文档(并可能会删除字段),update只会更新字段,并且永远不会删除字段。

如果您的文件是{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"}