CouchDB Group By值,日期范围

时间:2012-12-13 16:02:14

标签: view couchdb

我在CouchDB实例中有一堆文档,其中包含以下数据:

{
    "_id": "[string based ID generated by CouchDB]",
    "action": "view",
    "group": [Integer representing a group number],
    "date": [Javascript timestamp]
}

我可以使用以下内容按组和操作对数据进行分组,并获取每个组的操作总数:

function(doc) {
  emit([doc.group, doc.action], [1, 1]);
}

(简化为_sum)。

问题是,这会从所有组中获取数据,而我只想要来自单个组的数据(例如来自第1组)。

另外,我知道我可以做这样的事情按日期过滤,但我如何将它与上面的内容结合起来按日期和组ID过滤?

function(doc) {
    var then = new Date(Date.parse(doc['Event Date']));
    var fatalities = 0;
    if (doc['Total Fatal Injuries']!="") {
        fatalities = parseInt(doc['Total Fatal Injuries']);
    }
    emit([then.getFullYear(), then.getMonth()], [1, fatalities]);
}

(来自https://cloudant.com/blog/mapreduce-from-the-basics-to-the-actually-useful/

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你的map()和reduce()函数已经正确,你只需要将reduce=true&group_level=1&startkey=[<group id>]&endkey=[<group id>.toString() + "a"]传递给视图。

对于按日期过滤,您可以使用相同的策略。使用组级别,您可以查看每年和每月的总和。

相关问题