我想在更新失败时插入新文档 - 有没有办法做到这一点?现在RethinkDB只允许我在插入命令中通过{upsert:true}更新插入失败的文档.
您可以replace与分支和显式合并一起使用。
replace类似于update,只不过它完全替换了文档而不是与其合并。以下是等效的(在 Ruby 代码中):
table.get(id).update{|row| {a: row['a']+1}}
table.get(id).replace{|row| row.merge({a: row['a']+1})}
Run Code Online (Sandbox Code Playgroud)
因此,如果您想要执行“更新”,或者在没有行的情况下插入一行,您可以这样做:
table.get(id).replace {|row|
r.branch(
row.eq(nil),
INSERT_OBJECT,
row.merge(UPDATE_OBJECT))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2502 次 |
| 最近记录: |