日付ごとにグループ化されたマップ削減があります。
map = %Q{
function() {
var rounded_time = this.created_at;
rounded_time.setHours(0,0,0,0);
emit(rounded_time.getTime() / 1000, this.total);
}
}
reduce = %Q{
function(key, values) {
var result = 0;
values.forEach(function(value) {
result += value;
});
return result;
}
}
data = Order.map_reduce(map, reduce).out(inline: true)
しかしもちろん、いくつかの日付には順序がないため、結果には表示されません。これは時系列グラフに入力されているため、それらの日にゼロがあると便利です。
欠落している日付をゼロで埋めるきれいな方法があるかどうか疑問に思っています。日付ごとにイニシャルemit(time, 0)
を付けるのも 1 つの方法のようですが、mongo でそれを行う方法は見たことがありません。
そのため、データがマップリデュースから出た後にデータをマッサージすることに行き詰まっていますが、これはそれほど効率的ではなく、丸めエラーが発生しやすいものです。ありがとう!