我按organization
分组并使用$addToSet
来显示与该machineIds
相关联的不同organization
。我想为每个machineIds
获得organization
的计数。但是,下面的代码返回所有machineIds
的计数,而不是不同的计数。还有另一种方法可以获得总的唯一machineIds
吗?
db.getCollection('newcollections').aggregate([{
$group: {
_id: {
organization: "$user.organization"
},
machineId: {
"$addToSet": "$user.machineId"
},
count: {
$sum: 1
}
}
}])
答案 0 :(得分:11)
您需要在投影中使用$size运算符,如下所示:
db.collection.aggregate([{
$group: {
_id: {
organization: "$user.organization"
},
machineId: {
"$addToSet": "$user.machineId"
}
}
}, {
$project: {
"organization": "$_id.organization",
"machineId": 1,
"_id": 0,
"size": {
$size: "$machineId"
}
}
}])