【问题标题】:Aggregation query in MongoDBMongoDB中的聚合查询
【发布时间】:2012-07-18 00:27:27
【问题描述】:

我希望在 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}
});

提前致谢!

【问题讨论】:

    标签: mongodb


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多