0

MongoDB でかなり単純な集計クエリを作成しようとしていますが、特定の部分で苦労しています。

私がやりたいことは、過去 7 日間のすべてのレコードの合計を日別にグループ化することです。7 日前の日付を UTC として定義するのは簡単ですが、毎回 UTC 日付を計算する必要がないように、プログラムで実行したいと考えています。たとえば、1341964800 の代わりに、date() - 7 日などを指定したいと思います。

私が持っている現在の集計関数は次のとおりです。

db.visits_calc.group(
    { key:{date:true}, 
    cond:{date:{$gt:1341964800}}, 
    reduce:function(obj,prev) {prev.csum += obj.total_imp}, 
    initial:{csum:0}
});

前もって感謝します!

4

1 に答える 1

3

によって返されたミリ秒単位のタイムスタンプを計算して、Date.now()7 日前の適切なタイムスタンプを見つけることができます。7 日間のミリ秒数 (1000ms/s、60 s/min、60min/hr、24 hrs/dy、7dys/wk) を減算する必要があります。

var weekAgo = Date.now() - (1000*60*60*24*7);
db.visits_calc.group(
    { key:{date:true}, 
    cond:{date:{$gt:weekAgo}}, 
    reduce:function(obj,prev) {prev.csum += obj.total_imp}, 
    initial:{csum:0}
});
于 2012-07-17T16:27:27.933 に答える