CouchDB文档中的总和值

时间:2018-11-23 23:08:52

标签: javascript mapreduce couchdb couchdb-futon

所以假设我在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:

function(doc) {
 if(doc.nkill >= 1){
  emit(doc.country_txt,doc.nkill);
}
}

以及以下减少功能:

function(keys,values,rereduce) {
  return sum(values);
}

但是到目前为止,我无法获得想要的结果,我在做错什么,如何获得想要的结果?

1 个答案:

答案 0 :(得分:2)

您的属性nkill存储了一个字符串。

我假设sum()函数要么连接字符串,要么执行其他求和数字的操作。

您可以尝试将值与地图函数中的数字协调一致,这应该可以。

  

此外,如果要求和,则应使用_sum内部reduce函数。它在Erlang内部运行时速度更快。