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

基于$currentDate查询MongoDB活跃列表无结果问题咨询

问题根因
  • 字段匹配路径错误:你写入数据库的时间存放在start_time.date、end_time.date嵌套字段中,原查询直接匹配顶层的start_time、end_time字段,无法匹配到正确的日期数值。
  • $currentDate用法错误:$currentDate是MongoDB的更新操作符,仅用于写入数据时设置字段为当前时间,不能直接用于查询条件中匹配当前时间。查询时获取当前时间,直接使用对应运行环境的日期对象即可,如Mongo Shell/Node.js环境下用new Date()。
正确查询语句

普通find查询写法:

db.你的集合名.find({
  $and: [
    { "start_time.date": { $lte: new Date() } },
    { "end_time.date": { $gte: new Date() } }
  ]
})

如果需要在聚合查询中使用系统当前时间,可以用内置变量$$NOW:

db.你的集合名.aggregate([
  {
    $match: {
      $expr: {
        $and: [
          { $lte: ["$start_time.date", "$$NOW"] },
          { $gte: ["$end_time.date", "$$NOW"] }
        ]
      }
    }
  }
])
写入逻辑验证

你的写入逻辑没有问题,end_time的计算规则是在当前时间基础上叠加values.sale_price * 100秒,和你提供的示例文档数值吻合:示例中sale_price为5000,5000*100=500000秒约等于5.78天,对应start_time为9月14日、end_time为9月19日的时间差,计算逻辑不存在错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:54:04