2013-03-12 77 views
0

通過couchdb視圖,我們可以得到按鍵排序的結果。我一直在使用它來獲取與最高數字相關的值。例如,取這個結果(在鍵值表格中):couchDB reduce:rereduce是否保留map的結果順序?

{1:'sam'} 
{2:'jim'} 
{4:'joan'} 
{5:'jill'} 

couchDB會根據鍵值對它們進行排序。 (將關鍵看作「得分」可能會有所幫助。)我想找出誰的得分最高或最低。

我已經寫了減少,像這樣的功能:

function(keys, values) { 

var len = values.length; 
return values[len - 1]; 

} 

我知道有_stat之類的,但這些都不可能在我的應用程序(這是一個精簡下來,假設的例子)。

通常當我運行這個reduce時,根據是否設置降序,我將得到'sam'或'jill'。這就是我要的。但是,在大型數據集中,有時我會從列表中間找到某個人。

我懷疑這是發生在rereduce。我曾假設,當rereduce已經運行時,結果的順序被保留。但是,我不能保證情況如此。我知道在rereduce上,鍵是空的,所以按照正常的排序規則,它們不會被排序。是這樣嗎?

如果是這樣,關於如何讓我的最高得分手的建議?

回答

1

是的,我不認爲排序順序是有保證的,可能是因爲在集羣環境中無法保證。我懷疑你在這裏使用map/reduce的方式有點不確定,但是如果你真的想在這裏找到一個好的答案,你應該發佈你的視圖代碼。

+0

感謝您的回答。我開始懷疑自己有點不安。 – ddouglascarr 2013-03-13 23:54:18

相關問題