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

MongoDB执行find日期范围查询无报错返回空结果该如何解决

MongoDB日期范围查询无结果解决方法

根因分析

你存储的createdAt字段为MongoDB原生Date类型,查询时调用toISOString()将查询条件转为了字符串,类型不匹配导致没有匹配到任何数据,所以返回空结果。

正确代码实现

直接传入Date类型对象作为查询条件即可:

MongoClient.connect(url, (err, db) => {
  if (err) {
    return reject(err);
  }

  const dbo = db.db('dbname');

  dbo.collection('users').find({ 
      createdAt: {
          $gte: new Date(dateFrom),
          $lt: new Date(dateTo)
        }
    }).toArray( 
    (err, res) => {
      if (err) { return reject(err); }

      db.close();
      return resolve(res);
  });
});

注意事项

  • 确保dateFrom、dateTo是可被new Date()正常解析的合法格式(标准ISO字符串、时间戳等),避免生成Invalid Date导致查询异常
  • 若查询范围是按本地时区的自然日统计,需要先将起止时间转换为UTC时间再传入new Date(),避免时区偏移导致查询范围不符合预期
  • 可以先在Mongo Shell中执行测试查询验证数据是否存在,示例:
    db.users.find({createdAt: {$gte: ISODate("2021-03-01T00:00:00Z")}})
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 05:15:03