如何筛选createdAt字段为当前日期到90天前区间的数据
筛选最近90天数据的正确实现
现有代码的核心问题
Date.now是JavaScript内置的时间函数,必须加()调用才能拿到当前时间的毫秒时间戳,直接写Date.now得到的是函数对象本身,无法作为时间值参与查询term查询为精确匹配查询,仅能匹配到和指定值完全相等的记录,完全不满足「最近90天」的范围筛选需求,需要替换为range范围查询- 筛选逻辑错误:最近90天的规则是
createdAt >= 90天前的时间,而非等于某个固定时间点
正确实现
根据你存储createdAt的字段格式二选一即可:
字段存储为毫秒时间戳
const initialFilter = [ { range: { createdAt: { gte: Date.now() - 90 * 24 * 60 * 60 * 1000 } } }, ];
字段存储为标准ISO日期格式
const initialFilter = [ { range: { createdAt: { gte: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000).toISOString() } } }, ];
其中gte参数代表「大于等于」,会匹配所有创建时间晚于等于90天前的记录,刚好覆盖你需要的最近90天范围。
内容的提问来源于stack exchange,提问作者Murilo de Jesus
相关产品推荐
相关产品推荐

