0

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

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

couchDB 将根据键对它们进行排序。(将键视为“分数”可能会有所帮助。)我想找出谁的分数最高或最低。

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

function(keys, values) {

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

}

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

通常当我运行这个reduce时,我会得到'sam'或'jill',这取决于是否设置了descending。这就是我要的。但是,在大型数据集中,有时我会从列表中间找到某个人。

我怀疑这发生在 rereduce 上。我曾假设当 rereduce 运行时,结果的顺序会被保留。但是,我无法保证确实如此。我知道在 rereduce 时,键为空,所以按照正常的排序规则,它们不会被排序。是这样吗?

如果是这样,关于如何获得最高分的任何建议?

4

1 回答 1

1

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

于 2013-03-13T09:48:14.360 回答