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

如何查询MongoDB中两个Date字段时间差大于指定值的文档

MongoDB查询时间差大于10天的文档

要筛选出last_update_local_datetime与start_local_datetime时间差超过10天的文档,有两种简洁的实现方式:

方法1:基于毫秒数计算(兼容所有MongoDB版本)

利用$expr允许在查询条件中使用聚合表达式,通过$subtract计算两个日期字段的毫秒差,再与10天对应的毫秒数对比:

db.your_collection_name.find({
  $expr: {
    // 若需要严格大于10天,将$gte改为$gt
    $gte: [
      { $subtract: ["$last_update_local_datetime", "$start_local_datetime"] },
      10 * 24 * 60 * 60 * 1000 // 10天 = 10*24小时*60分钟*60秒*1000毫秒
    ]
  }
})

方法2:使用$dateDiff(MongoDB 5.0及以上版本)

MongoDB 5.0新增了$dateDiff操作符,可以直接计算两个日期的天数差,代码可读性更强:

db.your_collection_name.find({
  $expr: {
    $gt: [
      {
        $dateDiff: {
          startDate: "$start_local_datetime",
          endDate: "$last_update_local_datetime",
          unit: "day" // 指定计算单位为天
        }
      },
      10
    ]
  }
})

注意

如果你的实际字段是示例中的terminate_local_datetime(而非问题描述的last_update_local_datetime),只需将代码中的字段名替换即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:05:21