如何筛选和删除具有特定属性的记录

时间:2015-05-13 15:26:32

标签: rethinkdb nosql

我尝试使用具有特定值键的过滤器记录并删除它们。我试过" withFields"和#34; hasFields"但似乎我无法对他们应用删除。我的问题是我该怎么做?

2 个答案:

答案 0 :(得分:1)

r.db('databaseFoo').table('checkpoints').filter(function (user) {
    return user('type').default(false);
}).delete();

答案 1 :(得分:1)

如果您想要所有包含<pre>密钥的文档,可以使用type

hasFields

在您当前的查询中,您正在做的是获取所有没有r.db('databaseFoo').table('checkpoints') .hasFields('type') 键的文档或type的值等于type的文档。这可能是您想要的,但如果您只想要具有false属性的文档,则会有点混乱。

保留对原始文档的引用

使用type的问题在于它将选择(引用数据库中特定行的序列)转换为序列hasFieldsupdate ,你不能这样做。这是一个已知的issue in RethinkDB。您可以阅读this blog post以更好地了解ReQL中的不同类型。

为了解决这个问题,您可以使用delete方法和hasFields方法。

filter

此查询将起作用,因为它返回一个选择,然后可以将其传递到r.db('databaseFoo').table('checkpoints') .filter(r.row.hasFields('type')) .delete()

如果您希望获得具有特定键的特定值的所有记录,您可以通过几种不同的方式进行操作。要获取属性delete等于type的所有文档,您可以执行以下操作:

false

或者,您可以这样做:

r.db('databaseFoo').table('checkpoints')
 .filter({ type: false })