我想知道如何使用CouchDB的map / reduce和多个参数。例如,如果我的球队有年龄和性别的球员,我想我会为我的地图功能做这个:
"function(doc){
if(doc.team_name) {
emit(doc.team_name, doc);
}
}"
但是,我不确定如何编写一个reduce函数来获得团队中最年长的男性玩家或最年轻的女性或任意查询。我可以在URL中传入参数,还是必须编写多个视图?
提前致谢,
本
答案 0 :(得分:5)
减少功能有一点不同的目的。 Reduce函数为它处理的所有文档分组一些值。所以你可以,例如将玩家的工资,年龄或计算数量加起来。
如果您想获得团队中年龄最大的玩家,只需将emit
功能中的密钥设置为[team, age]
即可。视图始终按键排序。
function(doc) {
if (doc.team_name) {
emit([doc.team_name, doc.age], doc);
}
}
现在只查询您的观点。添加参数descending=true
,因此最老的玩家是第一个。默认情况下,视图顺序是升序。如果您想让特定团队中的玩家(仍按年龄排序)添加参数:startkey=[<team>, 999]&endkey=[<team>,0]&descending=true