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

MongoDB按用户与月份分组统计记录数的单查询实现方法

解决方案:单次聚合查询实现用户月度记录统计

完全可以通过单次聚合查询实现需求,不需要先获取用户列表再逐个统计。你当前的查询只按月份分组,缺少用户维度,只需调整$group阶段的_id字段,同时按用户名和年月分组即可。

修改后的聚合管道:

[
  {
    $group: {
      _id: {
        user: "$createdBy",
        month: { $substr: ["$createdAt", 0, 7] } // 适用于createdAt为字符串格式的场景
      },
      count: { $sum: 1 }
    }
  },
  {
    $sort: { "_id.month": -1, "_id.user": 1 } // 先按月份倒序,再按用户名正序排列
  },
  { $limit: 15 } // 按需保留,用于限制返回结果的数量
]

优化建议:

如果createdAt是MongoDB原生的Date类型(而非字符串),建议用$dateToString替代$substr,避免因日期字符串格式差异导致统计错误:

month: { $dateToString: { format: "%Y-%m", date: "$createdAt" } }

结果说明:

返回的每条数据会明确包含用户、对应年月以及该用户当月的记录数,示例格式如下:

{ "_id" : { "user" : "alice", "month" : "2024-05" }, "count" : 8 }
{ "_id" : { "user" : "bob", "month" : "2024-05" }, "count" : 12 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:24:51