couchdb, disabling rereduce



我正试图从couch数据库中获取一个键值对。关键是玩家id,价值是在轮到他们的地方有多少游戏。我有一个map方法,它成功地获得了一个playerID列表,gameID,其中playerID是谁,该轮到谁。我的reduce函数是一个简单的长度调用。

function(keys, values){
  return values.length;
}

当我在富顿运行这个时,它运行得很好。我得到样本输出:5,116,3

然而,当我从Divan(C#lib表示couchdb)调用它时,我得到了结果空,14

我的猜测是,它通过重读将这些内容合并为一个项目。有没有办法禁用重新录制?

谢谢。

-Nick

不,您不能禁用reduce。然而,这里的区别在于,Futon在调用您的视图时添加了group=true,而Divan没有,这解释了不同的结果。

您应该将reduce函数替换为"_count",它可以正确地处理reduce和re-restore两种情况。函数返回值数组的长度,这仅适用于reduce情况。javascript中的正确解决方案如下所示;

function(keys, values, rereduce) {
  if (rereduce) {
    return sum(values);
  } else {
    return values.length
  }
}

在reduce调用中,values数组包含作为值发射的任何内容,每个发射一个条目。既然你在数,你就不在乎价值是多少,只在乎有多少。在re-reduce调用中,值数组包含reduce调用以前发出的值。这里,值数组的长度是完全无关的,相反,您需要之前减少阶段的长度之和。

相关内容

  • 没有找到相关文章

最新更新