我对couchDB很新,并且遇到了查询问题。
这是我正在使用的数据集
的示例{
"_id": "data",
"_rev": "3-b78ec99614827106f637148c73dbf876",
"data": [
{
"id": 0,
"tags": [
"cupidatat",
"mollit",
"labore",
"minim",
"pariatur",
"qui",
"ipsum"
]
},
{
"id": 1,
"tags": [
"ex",
"cillum",
"est",
"et",
"mollit",
"mollit",
"exercitation"
]
}
这是我的地图功能
function(doc) {
for(var i in doc.data)
{
var person = doc.data[i];
for(var tag in person.tags)
{
emit(person.tags, 1);
}
}
}
这是减少功能
function(keys, values)
{
return sum(values);
}
我正在尝试生成结果,这些结果将为我提供所有记录的每个标记的出现次数,例如,
key value
"cupidatat" 1
"mollit" 3
如何修复它以便我能获得正确的结果?
答案 0 :(得分:1)
看起来你非常接近。使用您的示例文档,我使用此地图函数获得了您正在寻找的结果:
function(doc) {
for (var i = 0; i < doc.data.length; i++) {
for (var j = 0; j < doc.data[i].tags.length; j++) {
emit(doc.data[i].tags[j], 1);
}
}
}
并使用内置的reduce:
_sum
以下请求以您指定的格式返回JSON:
curl -X GET http://host:5984/db/_design/words/_view/count?reduce=true&group_level=1