Couchdb 如何生成映射函数返回的元素计数?

Couchdb 如何生成映射函数返回的元素计数?,couchdb,Couchdb,我有一个地图功能 function (doc) { for(var n =0; n<doc.Observations.length; n++){ emit(doc.Scenario, doc.Observations[n].Label); } } 我希望设计一个reduce函数,然后返回上述值的计数,类似于: Organized: 3 Generate: 1 Ingest: 1 我的map函数必须在我的Scenario字段上进行过滤,因此我在map函数

我有一个地图功能

function (doc) {
    for(var n =0; n<doc.Observations.length; n++){
        emit(doc.Scenario, doc.Observations[n].Label);
    } 
}
我希望设计一个reduce函数,然后返回上述值的计数,类似于:

Organized: 3
Generate: 1
Ingest: 1
我的map函数必须在我的Scenario字段上进行过滤,因此我在map函数中将其作为已发出的键

我尝试过使用一些内置的reduce函数,但最终得到了行数,或者根本没有,因为可用的函数不适用

我只需要访问values字段中出现的每个元素的计数。此外,这里显示的值是代表性的,在values字段中可能会找到100种不同类型的值

我真的很感谢你的帮助

以下是示例输入:

{
    "_id": "dummyId",
    "test": "test",
    "Team": "Alpha",
    "CreatedOnUtc": "2019-06-20T21:39:09.5940830Z",
    "CreatedOnLocal": "2019-06-20T17:39:09.5940830-04:00",
    "Participants": [
        {
            "Name": "A",
            "Role": "Person"
        }
    ],
    "Observations": [
        {
           "Label": "Report",
        },
        {
            "Label": "Ingest",
        },
        {
            "Label": "Generate",
        },
        {
            "Label": "Ingest",
        }
     ]
}

您可以通过“值”设置贴图“作为密钥,并将增量与该密钥关联,以确保保持计数。然后,您可以打印地图,该地图的外观应符合您的要求。

关闭。所以我可以,但我只想通过传递到视图中的键来计算实体。因此,我的map函数有一个key doc.Scenario,因为我传入了一个“Scenario”id,该id由过滤器为我过滤,只返回与该键相关的值。所以,是的,我可以做一个emit(doc.Observations[n].Label,1)然后reduce,但这将提供所有文档中的标签计数。我只想要场景等于我传入的标签数。
{
    "_id": "dummyId",
    "test": "test",
    "Team": "Alpha",
    "CreatedOnUtc": "2019-06-20T21:39:09.5940830Z",
    "CreatedOnLocal": "2019-06-20T17:39:09.5940830-04:00",
    "Participants": [
        {
            "Name": "A",
            "Role": "Person"
        }
    ],
    "Observations": [
        {
           "Label": "Report",
        },
        {
            "Label": "Ingest",
        },
        {
            "Label": "Generate",
        },
        {
            "Label": "Ingest",
        }
     ]
}