2015-12-02 40 views
0

我对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 

我该如何解决这个问题才能获得正确的结果?

回答

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); 
    } 
    } 
} 

,并使用内置的减少:

_sum 

以下要求在指定的格式返回JSON:

curl -X GET http://host:5984/db/_design/words/_view/count?reduce=true&group_level=1 
相关问题