当尝试插入(基于主键)已存在的文档时,Rethinkdb的insert
操作有两种解决冲突的模式。即:
可能的值是"错误","替换"或者"更新"。 "错误":不要插入新文档并将冲突记录为错误。这是默认值。 "替换":将旧文档全部替换为新文档。 "更新":使用新文档中的字段更新旧文档的字段。
虽然我清楚了解&替换'之间的技术差异。并且'更新'我很好奇两者之间的功能差异(如果有的话)。
例如,我想,当插入的doc与现有的doc完全相同时,两个中的一个可能不会导致更改事件中的事件,但这似乎不是案子。
那么,两个选项之间的功能差异是什么?
答案 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"}