0

我正在寻找在 MongoDB 中编写一个非常简单的聚合查询,但在某个部分遇到了困难。

我想做的是拉出过去 7 天内按天分组的所有记录的总和。将 7 天前的日期定义为 UTC 很容易,但我想以编程方式进行,所以我不需要每次都计算出 UTC 日期。例如,我想指定 date() - 7 天之类的东西,而不是 1341964800。

这是我拥有的当前聚合函数:

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 天内的毫秒数(1000 毫秒/秒、60 秒/分钟、60 分钟/小时、24 小时/天、7 天/周)。

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 回答