0

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

(reduceを使用するだけです_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/から)

ありがとう!

4

1 に答える 1

0

map() および reduce() 関数は既に正しいと思いますreduce=true&group_level=1&startkey=[<group id>]&endkey=[<group id>.toString() + "a"]。ビューに渡すだけです。

日付によるフィルタリングについては、同じ戦略を使用できます。グループ レベルを使用すると、年ごとおよび月ごとの合計を確認できます。

于 2012-12-14T10:05:44.107 に答える