更新随机选择的项目(如果RethinkDB中存在)

时间:2016-06-23 03:26:50

标签: rethinkdb reql

我想从0到多个项目的集合中随机选择一个项目,如果存在,则更新特定字段。如果该项不存在,我希望该函数不执行更新并返回null。

我当前的REQL代码:

r.db('test').table('test')
.filter({
    something: true
}).sample(1).nth(0).default(null).update(function(thing) {
    return r.branch(
        thing.ne(null),
        thing.without('reserve'),
        null
    )
}, {
    returnChanges: true
});

这总是会返回错误:Expected type SELECTION but found DATUM我不知道如何使用REQL来解决这个问题。

1 个答案:

答案 0 :(得分:1)

你可能想写这个:

r.db('test').table('test').filter({something: true}).sample(1).replace(function(thing) {
    return thing.without('reserve');
}, {returnChanges: true});

这将返回一个写入摘要对象,您可以使用该对象来确定替换是否实际发生。