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