在ReAL中计算分区的两侧

时间:2014-11-21 09:30:33

标签: database rethinkdb reql

我有一个具有布尔属性的数据集,如:

{
  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()
})

我怎样才能改善这一点并让它更干?

1 个答案:

答案 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树。