CouchDB 文档中的求和值
Sum values in CouchDB documents
假设我在 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",
}
我想创建一个 returns 我这样的视图:
键:墨西哥,值:4
这必须发生在所有其他国家/地区,因此需要根据国家/地区将 nkill 中的所有值相加。
我尝试了以下地图功能:
function(doc) {
if(doc.nkill >= 1){
emit(doc.country_txt,doc.nkill);
}
}
以及以下 Reduce 函数:
function(keys,values,rereduce) {
return sum(values);
}
但到目前为止我无法获得我想要的结果,我做错了什么以及如何获得我想要的结果?
你的属性nkill
存储的是一个字符串。
我假设 sum() 函数要么连接字符串,要么做其他求和数字的事情。
您可以尝试将您的值与地图函数中的数字一致,它应该可以工作。
Also, you should use the _sum internal reduce function if you want to sum something. It's way faster as it runs internally with Erlang.
假设我在 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",
}
我想创建一个 returns 我这样的视图:
键:墨西哥,值:4
这必须发生在所有其他国家/地区,因此需要根据国家/地区将 nkill 中的所有值相加。
我尝试了以下地图功能:
function(doc) {
if(doc.nkill >= 1){
emit(doc.country_txt,doc.nkill);
}
}
以及以下 Reduce 函数:
function(keys,values,rereduce) {
return sum(values);
}
但到目前为止我无法获得我想要的结果,我做错了什么以及如何获得我想要的结果?
你的属性nkill
存储的是一个字符串。
我假设 sum() 函数要么连接字符串,要么做其他求和数字的事情。
您可以尝试将您的值与地图函数中的数字一致,它应该可以工作。
Also, you should use the _sum internal reduce function if you want to sum something. It's way faster as it runs internally with Erlang.