2013-08-06 61 views
0

我是Couchbase的新手。我正在研究reduce函數,並在所有情況下實現rereduce參數始終爲false。我讀過關於rereduce的文檔。他們表示,在上一個縮小階段之後調用reduce函數時,rereduce爲真。這讓我很困惑。Couchbase rereduce always false

我的問題是如何得到rereduce = true ???

回答

0

如果羣集中有多個服務器,則Rereduce將變爲真。我會解釋_count函數的例子。

當您有一臺服務器時,在一臺服務器上處理map和reduce操作。即如果你有這樣的數組:map:[1:null,2:null,...,5:null]之後,你需要在reduce中計算它,它將在一步中返回5。

但是,如果您有多個服務器映射並減少功能將在每個服務器上執行。所以你從map中的第一個服務器得到[1:null,3:null],而從另一個服務器得到[2:null,4:null,5:null]。然後reduce函數也會在兩個服務器上調用,它將從第一個服務器返回[2],從另一個服務器返回[3]。該值將在一臺服務器上傳遞以再次減少,因此在rereduce中,您將獲得值參數[[2],[3]],在這裏您需要添加該值以獲得正確的計數。

+2

不僅當它來自多個節點時,而且在節點上調用reduce函數時以及在B * Tree的多個「節點」上完成計算時,Rereduce設置爲true。 –