mongoDB 日期排查踩坑

文章目录

      • 备忘和踩坑
        • 问题描述
        • 原因
        • 总结
        • 超级具体的总结

备忘和踩坑

问题描述

某天前端告诉我按日期筛选数据时某个日期缺数据了,但是我自己拿到mongo查询日志里的语句自己到mongo执行语句时却发现没缺数据……百思不得其解

原因

后来经过同事提示,mongo存日期的默认时区是UTC世界时,UTC这玩意比东八区时间晚了八小时。我当时在mongo中看到5.25 16:00就意味自己没缺数据,事实上我真正该确认的日期是UTC时间5.24 16:00

总结

mongo采用UTC世界时,比东八区时间晚八小时

超级具体的总结

1.mongo的日期采用的是UTC时间时,相比起东八区完8小时:
mongoDB日期在Navicat等图形可视化界面 很容易看错,比如5.25日会显示成5.24 16:00之类的。。
今天debug的时候就被骗了,前台反应缺少5.25的数据,自己到mongodb定位时确看到了5.25 16:00导致自己误认为5.25的数据没有缺失、是查询写错。。。然而真正该检查的应该是5.24 16:00

2.第二个问题是mongo打出来的日志关于日期条件那部分,如果需要丢到mongo执行的话要记得把格式改成iso格式,不然搜不到。具体可以百度关键字“mongo日期查询”

日志举例:
 { "client_id" : "2333", "market" : 2333, "business_date" : { "$gte" : { "$date" : "2021-05-04T16:00:00.000Z"}, "$lte" : { "$date" : "2021-06-03T16:00:00.000Z"} } }

改为:

db.集合名称.find(
{ "client_id" : "2333", 
	"market" : 2333, 
	"business_date" : { 
		"$gte" : ISODate("2021-05-04T16:00:00.000Z"), 
		"$lte" : ISODate("2021-06-03T16:00:00.000Z")
	}
}

日期格式忘了可以直接查看记录的ddl语句

在Navicat中把右下角的的logo切换成{}logo即可:
在这里插入图片描述

3.最后
mongo的日期显示可以查看官方文档了解一下,对此不是很熟。
mongo语句忘得差不多了。

你可能感兴趣的:(今天碰到了一个问题,MongoDB)