使用多个参数在CouchDB中映射/减少?

use*_*293 3 couchdb mapreduce map nosql

我想知道如何使用CouchDB的map/reduce与多个参数.例如,如果我的球队有年龄和性别的球员,我想我会为我的地图功能做这个:

"function(doc){
  if(doc.team_name) {
    emit(doc.team_name, doc);
  }
}"
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何编写一个reduce函数来获得团队中最年长的男性玩家或最年轻的女性或任意查询.我可以在URL中传入参数,还是必须编写多个视图?

提前谢谢,

amo*_*fis 5

减少功能有一点不同的目的.Reduce函数为它处理的所有文档分组一些值.因此,您可以对玩家的工资或年龄进行总结或计算.

如果你想获得团队中最老的玩家,只需将你的密钥设置emit[team, age].视图始终按键排序.

function(doc) {
  if (doc.team_name) {
    emit([doc.team_name, doc.age], doc);
  }
}
Run Code Online (Sandbox Code Playgroud)

现在只是查询你的观点.添加参数descending=true,所以最老的玩家是第一个.默认情况下,视图顺序是升序.如果您想让特定团队中的玩家(仍按年龄排序)添加参数:startkey=[<team>, 999]&endkey=[<team>,0]&descending=true