0

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

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

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

4

1 回答 1

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

于 2014-11-21T17:54:06.650 回答