Mongodb 如何计算mongoose中的管理员数量?

Mongodb 如何计算mongoose中的管理员数量?,mongodb,mongoose,aggregation,Mongodb,Mongoose,Aggregation,当我执行以下聚合时,我的期望是在我下面的输出中获得仪表板的角色计数,但我得到的是管理、扩展和种子值分别为0。你认为我犯了什么错 模型 这是我正在处理的聚合… 控制器 exports.userRoleCount = (rep,res,next) =>{ User.aggregate([ {$project: { admin: {$cond: [{$eq: ["$roles", "['admin']"]}, 1, 0]},

当我执行以下聚合时,我的期望是在我下面的输出中获得仪表板的角色计数,但我得到的是管理、扩展和种子值分别为0。你认为我犯了什么错

模型

这是我正在处理的聚合…
控制器

exports.userRoleCount = (rep,res,next) =>{
    
  User.aggregate([
  {$project: {
    admin: {$cond: [{$eq: ["$roles", "['admin']"]}, 1, 0]},
    seeder: {$cond: [{$eq: ["$roles", "seeder"]}, 1, 0]},
    extension: {$cond: [{$eq: ["$roles", "extension"]}, 1, 0]},
  }},
  {$group: { _id: null, admin: {$sum: "admin"},
                        seeder: {$sum: "$seeder"},
                        extension: {$sum: "$extension"},
                        total: {$sum: 1},
  }},
], (error,data)=>{
  if (error){
    return next(error);
  } else {
    res.json(data);
  }

}
)
这是我得到的输出
输出

{
        "_id": null,
        "admin": 0,
        "seeder": 0,
        "extension": 0,
        "total": 9
    }
我的期望是

{
        "_id": null,
        "admin": 3,
        "seeder": 4,
        "extension": 2,
        "total": 9
    }
这是我的角色数组。。。
db.ROLES=[“用户”、“管理员”、“扩展”、“种子机”]

我对代码片段做了如下更改,它成功了

 exports.userRoleCount = (rep,res,next) =>{

      User.aggregate([
      {
       "$project": {
          "_id": 1,
          "roles": 1
      }
    },

 {
    "$unwind": "$roles"
      },

      {
       "$group": {
        "_id": '$roles',
        "count": {"$sum": 1}
  
         }

 
          },
              {"$sort": {"_id": -1}},
              {"$limit": 5}
                      ], (error,data)=>{
                if (error){
               return next(error);
                   } else {
                 res.json(data);
               // console.log(data[1].count);
                      }
   
                   }
                   )
   


                   }
输出如下所示

           { 
               {

             _id:1     // this id is for role admin
             count: 2

           },

           
           {

             _id:2     // this id is for role extension
             count: 5

           }

       }

我已经改变了代码片段如下,它的工作

 exports.userRoleCount = (rep,res,next) =>{

      User.aggregate([
      {
       "$project": {
          "_id": 1,
          "roles": 1
      }
    },

 {
    "$unwind": "$roles"
      },

      {
       "$group": {
        "_id": '$roles',
        "count": {"$sum": 1}
  
         }

 
          },
              {"$sort": {"_id": -1}},
              {"$limit": 5}
                      ], (error,data)=>{
                if (error){
               return next(error);
                   } else {
                 res.json(data);
               // console.log(data[1].count);
                      }
   
                   }
                   )
   


                   }
输出如下所示

           { 
               {

             _id:1     // this id is for role admin
             count: 2

           },

           
           {

             _id:2     // this id is for role extension
             count: 5

           }

       }

嗨,Rohit,我有一个错误admin:{$sum:{$eq:[“角色”:“admin”]},^SyntaxError:Unexpected token':'此外,我在替换“:”之后得到了相同的结果,可能的话,请指定我可以在上面的代码中放置代码片段的位置。提前感谢!!!!您好,对不起,请使用逗号(,)代替:并将您的查询替换为这个聚合查询@Rohit K Choudhary,我得到的只是一个空集。。。我无法获得我错过的内容…嗨,Rohit,我有一个错误admin:{$sum:{$eq:[“角色”:“admin”]},^SyntaxError:Unexpected token':'此外,在将“:”替换为“:”之后,我得到了相同的结果,'如果可能,请指定我可以在上面的代码中放置代码片段的位置。提前感谢!!!!您好,对不起,请使用逗号(,)代替:并将您的查询替换为这个聚合查询@Rohit K Choudhary,我得到的只是一个空集。。。我无法得到我所错过的。。。