首页 > 解决方案 > Mongodb在单行中获取计数

问题描述

我有这样的数据:

[ {类型:'A',代码:'001',名称:'帐户001'},{类型:'A',代码:'001',名称:'帐户001'},{类型:'B',代码:'001',名称:'帐户 001'},{类型:'C',代码:'004',名称:'test_account'},{代码:'002',类型:'A',名称:'帐户 002' },...

只有A、B、C 3种类型。代码字段和姓名字段是相关的,例如:代码:“002”表示姓名字段=“帐户002”

我想获得总计数,目标输出应包含以下字段:

名称-代码-totalA-totalB-totalC

account 001-001-300-400-100

account 002-002-150-50-250 

test account-004-900-100-45

我无法在一行中获得总计数,有没有办法在 mongodb 中获得一行中的总 A、B、C 计数?

标签: mongodb

解决方案


$group

db.collection.aggregate([
  {
    "$group": {
      "_id": {
        type: "$type",
        code: "$code",
        name: "$name"
      },
      "count": {
        "$sum": 1
      }
    }
  },
  {
    "$group": {
      "_id": {
        "code": "$_id.code",
        "name": "$_id.name"
      },
      "types": {
        "$push": {
          "type": "$$ROOT._id.type",
          "count": "$$ROOT.count"
        }
      }
    }
  }
])

mongoplayground


推荐阅读