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

如何在MongoDB中按两个字段执行group by分组并统计用户数量

问题根因

你现有查询的错误出在$group阶段的分组键设置:你仅将rxm_number作为唯一分组键,没有把shelf_number也加入分组维度,因此聚合结果只会按rxm_number聚合,无法得到两个字段组合分组的统计结果。

修改后的查询

根据是否需要对同组内重复的username去重,可选择以下两种实现:

  1. 需统计去重后的用户数(同组内同一个username多次出现只算1次)
db.reportfinals.aggregate([
    {
        $group: {
            // 同时指定两个字段作为组合分组键
            _id: {
                rxm_number: "$rxm_number",
                shelf_number: "$shelf_number"
            },
            user_list: { $addToSet: "$username" }
        }
    },
    {
        $project: {
            _id: 0,
            rxm_number: "$_id.rxm_number",
            shelf_number: "$_id.shelf_number",
            users: { $size: "$user_list" }
        }
    }
])
  1. 无需去重(同组内每条文档对应计数+1,性能更优)
db.reportfinals.aggregate([
    {
        $group: {
            _id: {
                rxm_number: "$rxm_number",
                shelf_number: "$shelf_number"
            },
            users: { $sum: 1 }
        }
    },
    {
        $project: {
            _id: 0,
            rxm_number: "$_id.rxm_number",
            shelf_number: "$_id.shelf_number",
            users: 1
        }
    }
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:30:03