gpt4 book ai didi

Rethinkdb 原子操作

转载 作者:行者123 更新时间:2023-12-04 17:17:51 33 4
gpt4 key购买 nike

假设我有一个文件

{
id: 1,
fruits: []
}

水果在这里充当 SET

现在我想以原子方式为主键 = 1 的文档添加一个值到水果数组,或者如果它不存在则创建这样的文档(即在引擎盖下使用 SetInsert ReQL)

我还需要为增量(ReQL .Add)做同样的事情

显然这不能在客户端代码中完成,因为它破坏了原子性并且我最终得到了不一致的数据

我希望这样的事情是可能的
r.table('results').insert({
id: '62c70132-6516-4279-9803-8daf407ffa5c',
counter: r.row('counter').add(1).default(0)
}, {conflict: "update"})

但它以“RqlCompileError: r.row is not defined in this context in”而告终

任何帮助/指导表示赞赏,
谢谢!

最佳答案

这是不可能的 insert在这一刻。另一个提到的解决方案不是原子的,因为它使用子查询。
我们正在 https://github.com/rethinkdb/rethinkdb/issues/3753 中为此寻找解决方案.

但是,您可以使用 replace执行原子更新插入:

r.table('results').get('62c70132-6516-4279-9803-8daf407ffa5c')
.replace({
id: '62c70132-6516-4279-9803-8daf407ffa5c',
counter: r.row('counter').add(1).default(0)
})
replace如果文档不存在,实际上将执行插入。

关于Rethinkdb 原子操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31634640/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com