2015-07-01 25 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

沒有爲我工作 –

相關問題