我将逐步解释。我正在尝试为某个键集获取一个整数值。
所以让我说我有以下地图功能
function(doc) {
emit([doc.key1, doc.key2, doc.key3], doc.integerValue);
}
这种情况下的doc.IntegerValue是一个序列。所以,让我们说有人取得了0,10,20,30的进步,之后他再次开始了新的一场比赛,再次以0,10,20,30,40开始。
现在我试图达到以下目的。 1)当完成一组精确时它应该ouptut找到的最大integerValue。(前30,后40) 2)当在2级上进行组时,它应该根据方案1的最大值输出总和。这样我就可以计算总值。所以让我们假设key2和key1在两个例子中都相同,它会给我70。 3)当在1级上做一个组时,它也应该给出70.因为它与上一个场景中的2行相同。
_stats reduce函数不起作用,因为它只给出整个组的最大值或整个组的总和,而我的请求是两者的组合。
除了我知道之外,我可以选择将分组内容分开,然后选择startKey和endKey,但我想检查是否可以使用分组选项。
提前感谢任何想法。!
答案 0 :(得分:0)
如果您对统计信息不感兴趣,为什么不在视图中输出integerValue
*的单个最高值,并使用_sum
作为缩减功能?
// map function
function(doc) {
if(!doc.integerValue || !(doc.integerValue instanceof Array)) return
return ([doc.key1, doc.key2, doc.key3], doc.integerValue.sort().reverse()[0])
}
// reduce function
_sum
这意味着
group_level=exact
将输出序列的最高值group_level=2
将输出每个序列的单个最高值的总和group_level=1
也会这样做。 *假设integerValue
是一个数组 - 我不是100%肯定你的问题。