我有一个具有布尔属性的数据集,如:
{
name: 'Steven',
isQualified: true
}
我想要计算分区的两边。也就是说,有多少文件是合格的。使用单个rethinkdb查询执行此操作的最佳方法是什么?
这是一个使用underscore.js的示例,但它依赖于查询所有文档并在我的应用中处理它们:
results = _.partition(data, 'isQualified').map(_.iteratee('length'))
目前我有这个,但感觉效率低下,我假设/希望有更好的方法。
r.expr({
'qualified': r.table('Candidate').filter({isQualified: true}).count(),
'unqualified': r.table('Candidate').filter({isQualified: false}).count()
})
我怎样才能改善这一点并让它更干?
答案 0 :(得分:1)
在isQualified上创建索引
r.table('Candidate').indexCreate("isQualified");
然后用它来计算
r.expr({
'qualified': r.table('Candidate').getAll(true, {index: "isQualified"}).count()
'unqualified': r.table('Candidate').getAll(false, {index: "isQualified"}).count(),
})
这更快,因为服务器不必遍历所有文档,但只需遍历B树。