Database 在ReQL中计算分区的两侧

Database 在ReQL中计算分区的两侧,database,rethinkdb,reql,Database,Rethinkdb,Reql,我有一个具有布尔属性的数据集,如: { name: 'Steven', isQualified: true } 我要计算一个分区的两边。即有多少文档是合格的或不合格的。使用单个DB查询执行此操作的最佳方法是什么 下面是一个下划线.js示例,但它依赖于查询所有文档并在我的应用程序中处理它们: results = _.partition(data, 'isQualified').map(_.iteratee('length')) 目前我有这个,但感觉效率很低,我假设/希望有更好的方法 r

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

{
  name: 'Steven',
  isQualified: true
}
我要计算一个分区的两边。即有多少文档是合格的或不合格的。使用单个DB查询执行此操作的最佳方法是什么

下面是一个下划线.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()
})

我怎样才能改进它并使它更干燥呢?

在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树即可