2014-11-21 55 views
0

我有有一个布尔属性,就像一个数据集:计数分区两侧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

创建于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树。