2014-11-21 57 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樹。