如何返回CouchDB中保存的不同值的摘要

时间:2015-01-31 12:10:57

标签: couchdb

鉴于CouchDB中保存的对象集合如下所示:

{
   "_id": "-5739365454",
   "_rev": "1-d55b2651b214113bab0b4c18a401eaef",
   "userId": "mike",
   "remoteAddr": "77.102.112.205"
}

{
   "_id": "-573936626",
   "_rev": "1-778bbf1c0e5cfe8bbd83dbe618e8b549",
   "userId": "mike",
   "remoteAddr": "77.102.112.205"
}
...
{
   "_id": "-573954545",
   "_rev": "1-4350856f40c091156f8bb984a5559ebd",
   "userId": "jeff",
   "remoteAddr": "77.102.112.205"
}

我希望创建一个输出视图,它给我一组看起来类似于以下内容的结果(伪输出 - 在语法上无效):

userId     count
mike       2
jeff       1
...

因此,数据库中每个不同的userId的输出中将存在一个'row'/元素,以及userId在DB中存在的次数。

到目前为止,我有以下内容:

{
   "_id": "_design/myObj",
   "_rev": "4-cd468634f4fb6bef500753fedcb35e27",
   "views": {
       "by_userId": {
           "map": "function(doc) { if (doc.userId) { emit (doc.userId, doc._id)} }",
           "reduce": "_stats"
       }
   },
   "language": "javascript"
}

...但这不符合要求。感激地收到任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以尝试使用_count内置函数。例如:

`
{
    "_id": "_design/myObj",
    "_rev": "4-cd468634f4fb6bef500753fedcb35e27",
    "views": {
        "by_userId": {
            "map": "function(doc) { if (doc.userId) { emit (doc.userId, null)} }",
           "reduce": "_count"
       }
   },
   "language": "javascript"
}`