我想在更新失败时插入新文档 - 有什么办法吗?现在 RethinkDB 只允许我通过插入命令中的 {upsert: true} 在插入失败时更新文档。
2671 次
1 回答
4
您可以使用replace
分支和显式合并。
replace
就像update
,只是它完全替换了一个文档而不是与它合并。以下是等价的(在 Ruby 代码中):
table.get(id).update{|row| {a: row['a']+1}}
table.get(id).replace{|row| row.merge({a: row['a']+1})}
因此,如果您想进行“更新”,或者如果没有行则插入一行,您可以这样做:
table.get(id).replace {|row|
r.branch(
row.eq(nil),
INSERT_OBJECT,
row.merge(UPDATE_OBJECT))
}
于 2014-01-16T00:55:47.577 回答