如何代表创建的结果计数角色?

问题描述 投票:0回答:1
[
  {
    "_id": '1',
    "role":'admin',
    "created":"0",
  },
   {
    "_id": '2',
    "role":'vendor',
    "created":"1",
  },
   {
    "_id": '3',
    "role":'cus',
    "created":"1",
  },
  {
    "_id": '4',
    "role":'cus',
    "created":"1",
  },
  {
    "_id": '5',
    "role":'admin1',
    "created":"1",
  },
  {
    "_id": '6',
    "role":'support',
    "created":"5",
  },
  {
    "_id": '7',
    "role":'support',
    "created":"5",
  },
]

想要这种类型的结果在此先感谢

[
  {
    _id: 1,
    created: "admin",
    counts: [
      {
        role: "vendor",
        count: 1
      },
      {
        role: "cus",
        count: 2
      }
    ]
  },
  {
    _id: 5,
    created: "admin1",
    counts: [
      {
        role: "support",
        count: 2
      }
    ]
  }
]
arrays node.js mongodb mongoose
1个回答
0
投票

您可以按角色分组并使用此查询创建的计数。

db.<yourCollectionName>.aggregate ( { $group : { _id: "$role" , count: { $sum:1 } } })

上面的查询返回output这样...

{ "_id" : "cus", "count" : 2 }

聚合的另一种变化是..

db.counts.aggregate([{ $group: { _id: "$role", count: { $sum:1 }, Data: { $push: "$$ROOT" } }  }]).pretty() 

上面的查询返回output这样...

{
    "_id" : "cus",
    "count" : 2,
    "Data" : [
            {
                    "_id" : ObjectId("5db368e9d130deb5c19f35c8"),
                    "role" : "cus",
                    "created" : "1"
            },
            {
                    "_id" : ObjectId("5db36913d130deb5c19f35c9"),
                    "role" : "cus",
                    "created" : "1"
            }
    ]

}

© www.soinside.com 2019 - 2024. All rights reserved.