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

MongoDB如何查询currentDate晚于endDate的已过期文档

MongoDB查询已过期文档操作方法

你需要比较同一文档内的当前时间和endDate字段,可根据你使用的MongoDB版本选择以下方案:

方案1:MongoDB 3.6及以上版本(推荐)

使用$expr运算符实现同文档字段比较,该方案支持命中索引,性能更优:

// 用系统当前时间作为currentDate比较
db.你的集合名称.find({
  $expr: {
    $gt: [new Date(), "$endDate"]
  }
})

参数说明:

  • $expr:支持在查询条件中使用聚合表达式,可实现同文档多字段比较
  • $gt:大于比较运算符,返回前者大于后者的文档
  • 如果你需要自定义currentDate而非用系统当前时间,直接替换new Date()为指定的ISODate值即可,示例:ISODate("2023-10-01T00:00:00.000Z")

方案2:MongoDB 3.6以下版本

如果使用的是低版本MongoDB,可使用$where运算符实现,注意该方案性能较差,不推荐大数据量场景使用:

db.你的集合名称.find({
  $where: function() {
    return new Date() > this.endDate
  }
})

注意事项

  • 确保你存储的endDate字段为ISODate类型,不需要额外做格式转换即可正常比较时间先后
  • 数据量较大的场景建议给endDate字段添加索引,可大幅提升查询效率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 15:24:02