Mongodb - 使用addToSet的项目数

时间:2015-07-01 15:55:27

标签: mongodb count sum distinct

我按organization分组并使用$addToSet来显示与该machineIds相关联的不同organization。我想为每个machineIds获得organization的计数。但是,下面的代码返回所有machineIds的计数,而不是不同的计数。还有另一种方法可以获得总的唯一machineIds吗?

db.getCollection('newcollections').aggregate([{
    $group: {
    _id: {
        organization: "$user.organization"
    },
    machineId: {
        "$addToSet": "$user.machineId"
    },
    count: {
        $sum: 1
    }
    }
}])

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"
    }
    }
}])