2012-07-17 158 views
0

我正在寻找一个非常简单的聚合查询在MongoDB中,但与特定部分挣扎。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} 
}); 

提前感谢!

回答

3

您可以对由Date.now()返回的毫秒时间戳执行算术运算,以查找7天前的适当时间戳。您需要在7天内减去毫秒数(1000ms/s,60s/min,60min/hr,24小时/ 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} 
});