存储在MongoDB中的时间是标准时间UTC +0:00,而中国时区是+8.00 由于时差的存在在使用聚合函数$dateToString时发现统计不准问题.
为了重现问题,准备如下数据测试
测试聚合使用$dateToString格式化时间
发现格式化后显示的时间就存在时间差导致的问题,原因是聚合操作默认是根据标准时间UTC来进行计算的.
发现问题官方文档查找到对dateToString操作提供时区操作,实例如下:
执行产生以下错误信息,查询当前数据库版本发现当前数据库版本还不支持timezone参数
db.version(); //查询数据库版本
执行发现当前数据库版本: 3.4.10
3.4版官网文档: https://docs.mongodb.com/v3.4/reference/operator/aggregation/dateToString/index.html
对低版本数据参数不支持时导致时差问题,最终通过$add操作补齐时差,实例如下:
网友评论