couchDB reduce:rereduce是否保留了map的结果顺序?

时间:2013-03-12 23:25:50

标签: couchdb

使用couchdb视图,我们得到按键排序的结果。我一直用它来获得与最高数字相关的值。例如,取这个结果(以key:value形式):

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

couchDB将根据密钥对这些进行排序。 (将关键词视为“得分”可能会有所帮助。)我想知道谁得分最高或最低。

我写了一个像这样的reduce函数:

function(keys, values) {

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

}

我知道有_stat等,但这些在我的应用程序中是不可能的(这是一个精简的,假设的例子)。

通常当我运行此减少时,我将获得'sam'或'jill',具体取决于是否设置了降序。这就是我要的。但是,在大型数据集中,有时我会从列表中间找到某人。

我怀疑这是在重新减少时发生的。我曾假设当运行rereduce时,结果的顺序会被保留。但是,我无法保证会出现这种情况。我知道在rereduce上,键是null,所以通过正常的排序规则它们不会被排序。是这种情况吗?

如果是的话,有关如何获得最高分的任何建议吗?

1 个答案:

答案 0 :(得分:1)

是的,我不认为排序顺序是有保证的,可能是因为在集群环境中无法保证。我怀疑你在这里使用map / reduce的方式有点不确定,但如果你真的想要一个好的答案,你应该发布你的视图代码。