MongoDB如何通过find查询筛选当前日期与fechaActualizacion天数差大于4的文档
MongoDB按日期间隔筛选文档方案
你需要实现筛选「当前日期与fechaActualizacion字段的天数差值大于4」的文档,对应查询实现如下:
方案1:预计算日期阈值(推荐,可命中索引,性能更高)
你给出的Moment计算逻辑moment().diff(fechaActualizada, 'days') > 4等价于fechaActualizacion的时间早于等于4天前的同一时间点,因此可以提前计算阈值再做查询:
// 计算4天前的日期时间戳 const fourDaysAgo = moment().subtract(4, 'days').toDate() // 执行find查询,fechaActualizacion加索引后查询效率很高 const res = await 你的模型名.find({ fechaActualizacion: { $lte: fourDaysAgo } })
方案2:MongoDB原生表达式计算(仅适合小数据集,无法命中索引)
如果需要在查询内部实时计算日期差,可以用$expr搭配MongoDB内置日期运算符实现:
const res = await 你的模型名.find({ $expr: { $gt: [ // 计算两个日期的差值换算为天数 { $divide: [ { $subtract: [ new Date(), "$fechaActualizacion" ] }, 86400000 ] }, 4 ] } })
参考Schema结构

内容的提问来源于stack exchange,提问作者Edsen
相关产品推荐
相关产品推荐

