如何在Node.js(Mongoose)中从MongoDB获取过去2天的数据?
使用Mongoose聚合查询获取指定时间范围的数据
当然可以用聚合查询实现这个需求,核心是利用聚合管道的$match阶段做条件筛选,逻辑和你原来的find查询完全一致。
基础实现(和原find逻辑一致)
先计算两天前的时间戳,再在聚合管道里用$match筛选符合条件的文档:
// 计算两天前的日期 const twoDaysAgo = new Date(Date.now() - 1000 * 86400 * 2); // 聚合查询 const total_user = await User.aggregate([ { $match: { createdAt: { $lte: twoDaysAgo } } } ]);
扩展:统计符合条件的用户数量
如果你的需求是统计用户数而非获取完整文档,可以在管道里追加$count阶段:
const userCountResult = await User.aggregate([ { $match: { createdAt: { $lte: twoDaysAgo } } }, { $count: "total_users" } ]); // 返回结果为数组格式:[{ total_users: 123 }] const total_users = userCountResult[0]?.total_users || 0;
注意事项
如果实际要找的是过去2天内创建的用户(即创建时间晚于两天前),只需把$lte改成$gte即可,可根据业务需求灵活调整条件。
内容的提问来源于stack exchange,提问作者lokendra birla
相关产品推荐
相关产品推荐

