我经常做你正在做的事情,所以这是可能的。
要么您的对象有点超出 CouchDB 的限制,要么您的代码中存在错误。
您可以设置 CouchDB 配置,query_server_config/reduce_limit = "false"
并查看它的外观。
但是,如果您仅累积四个项目,我认为这不是减少限制的问题。我总是遇到 JavaScript 问题。例如,将数字添加到字符串会生成(更长的)字符串。添加更多的数字会使字符串越来越长。
var old_value = "3" // This is a bad value, perhaps from a map function bug
var new_value = 5
new_value = new_value + old_value // I wanted 8, but I got "53"
new_value = new_value + 2012 // I wanted 2020 but I got "532012"
数组和其他类型也会出现类似问题。
您有一个良好的开始,该map
函数发出返回的相同内容reduce
(一个对象)。也许您可以发布一些您正在使用的代码。我通常会这样做:
function(keys, vals, rereduce) {
// reduce function
var result = {'calories':0, 'miles':0, 'minutes':0, 'steps':0}
for(var i = 0; i < vals.length; i++) {
result.calories += vals[i].calories || 0
result.miles += vals[i].miles || 0
result.minutes += vals[i].minutes || 0
result.steps += vals[i].steps || 0
}
return result
}
请注意,reduce 输出与 map 输出完全相同,因此此代码适用于 reduce 和 re-reduce。