【发布时间】:2017-11-29 19:12:36
【问题描述】:
我正在尝试在 CouchDB 中编写一个查询,该查询将获取所有年龄最大的人的姓名和年龄,按性别和 isActive 状态分组。仅搜索一个数据文档。作为了解当值是对象时如何编写 reduce 函数的中间步骤,我编写了一个查询,它只返回每个组中的最大年龄,但这并不成功。下面的 map 和 reduce 函数返回相应的键,即男/女和真/假的 4 种组合,但值在所有四组中总是返回 0。
为什么这个视图不返回每个组的最大年龄?
地图功能:
function(doc){
for (var i in doc.data){
var person = doc.data[i];
emit([person.gender, person.isActive], {'age':person.age, 'name': person.name});
}
}
减少功能:
function(keys, values, rereduce){
var maxAge = 0;
for (var i = 0; i < values.length; i++){
if(values[i].age > maxAge){
maxAge = values[i].age;
}
}
return maxAge;
}
【问题讨论】:
标签: javascript couchdb