因此,假设我在CouchDB中具有以下两个文档:
{
"_id": "197000000002",
"_rev": "1-fbe819b01108f30d2e9e96f3fb46eff8",
"country": "130",
"region": "1",
"country_txt": "Mexico",
"nkill": "1",
}
{
"_id": "197000000003",
"_rev": "1-fbe819b01108f30d2e9e96f3fb46eff8",
"country": "130",
"region": "2",
"country_txt": "Mexico",
"nkill": "3",
}
我想创建一个视图,返回如下内容:
关键:墨西哥,价值:4
而且这对于每个其他国家都必须发生,因此nkill中的所有价值都需要根据该国家进行汇总。
我尝试了以下Map功能:
function(doc) {
if(doc.nkill >= 1){
emit(doc.country_txt,doc.nkill);
}
}
以及以下Reduce函数:
function(keys,values,rereduce) {
return sum(values);
}
但是到目前为止,我无法获得想要的结果,我在做错什么,如何获得想要的结果?
最佳答案
您的属性nkill
存储了一个字符串。
我假设sum()函数要么连接字符串,要么执行其他求和运算。
您可以尝试在地图函数中将您的值与数字协调起来,它应该可以工作。
另外,如果要求和,则应使用_sum内部reduce函数。它在Erlang内部运行时速度更快。