在汇总框架中提供完整时间戳时,如何按日期汇总? [英] How to aggregate by date when a full timestamp is given in aggregation framework?

查看:64
本文介绍了在汇总框架中提供完整时间戳时,如何按日期汇总?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个错误集合,因此每个错误都包含一个date字段.如何仅按DAY(即排除一天中的时间)汇总/计数/分组错误?我猜应该应用一些精巧的投影.

I have a collection of errors, so that every error carries a date field. How can I aggregate/count/group the errors by DAY only (i.e. exclude the time of the day)? I guess, some smart projection should be applied.

推荐答案

您可以通过使用以下聚合运算符来做到这一点:

You can do this by using the following aggregation operators:

  • $group
  • $year
  • $month
  • $dayOfMonth

这会为您提供每个日期的错误计数:

This gives you the error count for each date:

db.errors.aggregate(
    { $group : {
        _id: {
            year : { $year : "$date" },        
            month : { $month : "$date" },        
            day : { $dayOfMonth : "$date" },
        },
        count: { $sum: 1 }
    }}
);

此示例假定错误文档中的日期字段为date,类型为 BSON日期. 文档明确建议不要在MongoDB中使用Timestamp类型,但强烈建议不要使用此类型:

This example assumes that the date field in your error documents is date and of type BSON Date. There is also a Timestamp type in MongoDB, but use of this type is explicitely discouraged by the documentation:

注意:BSON时间戳类型供内部MongoDB使用.对于大多数 情况下,在应用程序开发中,您将需要使用BSON日期 类型.有关更多信息,请参见日期.

Note: The BSON Timestamp type is for internal MongoDB use. For most cases, in application development, you will want to use the BSON date type. See Date for more information.

这篇关于在汇总框架中提供完整时间戳时,如何按日期汇总?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆