2013-08-06 131 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。 –