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

Mongoose如何统计上周每日新增的用户数量?

实现方案

直接使用MongoDB的聚合查询能力实现按日期分组统计,不需要额外遍历全量数据,性能更高。

完整实现代码

var d = new Date();
d.setDate(d.getDate() - 7);

// 聚合查询
const stats = await User.aggregate([
  // 第一步:筛选过去7天新增的用户
  { $match: { createdAt: { $gt: d } } },
  // 第二步:按日期分组统计数量
  {
    $group: {
      _id: {
        // 把createdAt转为DD-MM-YYYY格式的字符串,和你需要的键格式完全匹配
        $dateToString: { format: "%d-%m-%Y", date: "$createdAt" }
      },
      count: { $sum: 1 }
    }
  }
])

// 把聚合返回的数组转为期望的对象结构
const userCount = {}
stats.forEach(item => {
  userCount[item._id] = item.count
})

return res.status(200).json({ error: false, data: { user_count: userCount } })

注意事项

  • 如果你需要按本地时区统计而不是UTC时区,需要在$dateToString中添加时区参数,比如国内时区添加timezone: "Asia/Shanghai"即可:
    $dateToString: { format: "%d-%m-%Y", date: "$createdAt", timezone: "Asia/Shanghai" }
    
  • 如果某一天没有新增用户,返回结果中不会出现该日期的键,如果你需要补全7天所有日期、没有新增的默认值为0,可以在聚合后额外遍历最近7天的日期补全即可。

内容的提问来源于stack exchange,提问作者Al Imran Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:39:03