You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB按起止日期过滤时为何排除结束日期?

问题原因分析

你的查询结束时间设为ISODate('2023-04-18T00:00:00.000Z'),这个时间是UTC时区的4月18日零点整。而数据库中存储的4月18日数据,比如2023-04-18T11:41:45.303+00:00,时间戳明显晚于零点,不满足$lte(小于等于)的条件,因此被排除在外。

解决方案

方案一:覆盖4月18日全天数据(推荐)

将结束时间设为4月19日零点,使用$lt(小于)操作符,确保包含4月18日所有时间点的数据,同时不会误包含4月19日零点的记录:

{
  createdAt: {
    $gte: ISODate('2023-04-10T18:30:00.000Z'),
    $lt: ISODate('2023-04-19T00:00:00.000Z')
  }
}

方案二:指定4月18日的截止时刻

如果业务需要精确到4月18日的最后一刻,可以将结束时间设为当日23:59:59.999Z:

{
  createdAt: {
    $gte: ISODate('2023-04-10T18:30:00.000Z'),
    $lte: ISODate('2023-04-18T23:59:59.999Z')
  }
}

额外优化:简化查询写法

MongoDB支持在同一个字段上直接合并范围条件,无需使用$and,写法更简洁且效果一致。

内容的提问来源于stack exchange,提问作者Ben A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:43:14