2015-07-01 24 views
2

我按organization分组,并使用$addToSet显示与该organization相关的不同machineIds。我想得到的计数machineIds。但是,下面的代码返回所有machineIds的计数,而不是不同的计数。有没有另外一种方法可以获得唯一的总数machineIdsMongodb - 使用addToSet的项目数

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

你能告诉你的文件吗? – styvane

+0

“_id”:{ “组织”: “” }, “设备ID”: “” ], “计数”:2.0000000000000000 – ellier

+0

这个例子中只有一个设备ID,但数为2 – ellier

回答

7

您需要使用$size操作投影像以下:

db.collection.aggregate([{ 
    $group: { 
    _id: { 
     organization: "$user.organization" 
    }, 
    machineId: { 
     "$addToSet": "$user.machineId" 
    } 
    } 
}, { 
    $project: { 
    "organization": "$_id.organization", 
    "machineId": 1, 
    "_id": 0, 
    "size": { 
     $size: "$machineId" 
    } 
    } 
}]) 
+0

感谢这么多,它的工作! – ellier

+0

我第一次真正理解$项目的目的,THX;) –

+0

没有为我工作 –

相关问题