Mapreduce reduce函数上的Break by键

Mapreduce reduce函数上的Break by键,mapreduce,couchdb,cloudant,Mapreduce,Couchdb,Cloudant,我正在使用基于CouchDB的Cloudant来存储一些数据,并希望创建一个reduce函数来按键求和。我正在使用以下映射函数: function (doc) { emit(doc.name, 1); } 因此,我收到的json文件如下: { "total_rows": 3, "offset": 0, "rows": [ { "id": "605b21a9c295ec9c03ae2a6aadeb1422",

我正在使用基于CouchDB的Cloudant来存储一些数据,并希望创建一个reduce函数来按键求和。我正在使用以下映射函数:

function (doc) {
  emit(doc.name, 1);
}
因此,我收到的json文件如下:

{
    "total_rows": 3,
    "offset": 0,
    "rows": [
        {
            "id": "605b21a9c295ec9c03ae2a6aadeb1422",
            "key": "foo",
            "value": 1
        },
        {
            "id": "cb4258669082efeae9391288eb684339",
            "key": "foo",
            "value": 1
        },
        {
            "id": "f2e7e69d6a3d26fa3b8cad1f0c63ccc3",
            "key": "bar",
            "value": 1
        }
    ]
}
因此,对于_sum内置函数,我期望类似于:

{
    "rows": [
        {
            "key": "foo",
            "value": 2
        },
        {
            "key": "bar",
            "value": 1
        }
    ]
}
但我明白了:

{
    "rows": [
        {
            "key": null,
            "value": 3
        }
    ]
}
我在阅读Cloudant文档时发现_sum函数:

function (doc) {
  emit(doc.name, 1);
}
生成键的所有值的总和,值必须是数字


但是结果不是按键返回,而是按地图上的每个值返回。

您忘记设置reduce查询参数了

我使用了相同的map函数+\u sum函数

网址:http://host:5984/db/_design/stack/_view/byname?reduce=true&group=true

结果:

{"rows":[
{"key":"bar","value":1},
{"key":"foo","value":2}
]}

好的,它对我的示例有效,但是我在mycode上得到了一个{错误:query\u parse\u错误,原因:在地图视图上分组的使用无效。}。