0
CloudAntでは、トピックと評議会という2つの属性でグループ化された機能の数を取得したいと考えています。多くの手品をした後、私はこれを構築することができました:CloudantでCOUNT ... GROUP BYを模倣する(CouchDB)
// map
function (doc) {
if (doc.properties && doc.properties.openCouncilDataTopic) {
var ret = {};
ret [doc.properties.openCouncilDataTopic] = {};
ret [doc.properties.openCouncilDataTopic][doc.properties.sourceCouncilId] = 1;
emit(null, ret);
}
}
// reduce
function (keys, values, rereduce) {
var ret = values[0];
function zero(x) { return x ? x : 0 }
function add(i, topic, id) {
ret[topic][id] = zero(ret[topic][id]) + values[i][topic][id];
}
function countTopic(topic) {
if (!ret[topic])
ret[topic] = {};
Object.keys(values[i][topic]).forEach(add.bind(undefined, i, topic));
}
for (var i = 1; i < values.length; i++) {
Object.keys(values[i]).forEach(countTopic);
}
return ret;
}
良い方法はありますか?