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",
}
]
}