我尝试使用具有特定值键的过滤器记录并删除它们。我试过" withFields"和#34; hasFields"但似乎我无法对他们应用删除。我的问题是我该怎么做?
答案 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
的问题在于它将选择(引用数据库中特定行的序列)转换为序列hasFields
和update
,你不能这样做。这是一个已知的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 })