ISO Date查询仅匹配00:00时间的日期,无法匹配带具体时间的日期
问题分析与解决方案
原因
你用{dCreatedAt: ISODate('2022-11-16')}做筛选时,MongoDB会精确匹配时间戳完全等于2022-11-16T00:00:00.000+00:00的文档。第二条数据的时间是2022-11-15T13:31:18.513+00:00,和筛选的时间戳完全不同,自然不会被匹配到。
解决方案
如果你的需求是筛选2022年11月16日当天的所有数据,需要用范围查询来匹配当天的时间区间:
// 匹配UTC时间2022-11-16 00:00:00到2022-11-17 00:00:00之间的文档 db.collection.find({ dCreatedAt: { $gte: ISODate('2022-11-16'), $lt: ISODate('2022-11-17') } })
如果是要筛选2022年11月15日及之后的数据,调整范围即可:
db.collection.find({ dCreatedAt: { $gte: ISODate('2022-11-15') } })
内容的提问来源于stack exchange,提问作者vivek modi
相关产品推荐
相关产品推荐

