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

如何在MongoDB中查询最近5天的所有日志记录

解决方案

你存储的date字段为ISODate(即MongoDB的Date类型),直接使用Date.now()返回的数值时间戳和Date类型对比会出现类型不匹配,只需要将计算得到的5天前的时间戳转为Date类型即可:

db.getCollection('logs')
.find({
  "date": {
    "$gt": new Date(Date.now() - 5 * 24 * 60 * 60 * 1000)
  }
})
.sort({date: -1})

可选:按自然日统计最近5天

如果需要从5天前的0点开始统计数据(排除当前时间的时分秒带来的偏移,比如今天14点查询的话,只统计5天前0点之后的所有数据,而不是往前推120小时),可以使用以下写法:

const fiveDaysAgo = new Date();
// 先将当前时间置为当天0点
fiveDaysAgo.setHours(0, 0, 0, 0);
// 再减去5天的毫秒数
fiveDaysAgo.setTime(fiveDaysAgo.getTime() - 5 * 24 * 60 * 60 * 1000);

db.getCollection('logs')
.find({
  "date": {"$gt": fiveDaysAgo}
})
.sort({date: -1})

注意事项

  • MongoDB中Date类型和数值类型的时间戳无法直接匹配,必须统一类型再查询
  • 5天对应的毫秒数为432000000,直接写固定值和写运算式效果一致,运算式可读性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:27:03