【发布时间】:2020-04-29 16:47:30
【问题描述】:
假设我有一个如下的文档架构:
{
users: [{userid: 123, username: "foo"}, {userid: 234, username: "bar"}]
}
我想向users 添加一个用户名等于给定用户名的“唯一”版本的项目。例如,如果我尝试将{userid: 456, username: "baz"} 添加到上面的用户列表中,它应该会成功,但是如果我尝试将{userid: 456, username: "foo"} 添加到上面,那么应该添加{userid: 456, username: "foo (1)"}。
有没有办法通过 RethinkDB 中的原子更新来做到这一点?这是一个确定性操作,所以理论上应该是可能的吧?如果没有,是否有某种方法可以至少在插入期间检测到用户名冲突并简单地拒绝更新?
我知道我可以使用子查询,但结果似乎不是原子操作?我在文档中看到的所有子查询示例都在单独的表中显示子查询。
【问题讨论】: