2015-05-14 75 views
0

我有一個看起來像這樣我怎樣才能找到一個領域的總和的平均值?

{ parentId: 2, childId: 4, data: 7 }, 
{ parentId: 2, childId: 3, data: 5 }, 
{ parentId: 2, childId: 3, data: 1 } 

我想通過拉其中的parentId =特定ID的childID的分組數據的總和的平均值文件。

例如數據,我想通過一個給定父ID返回(2)是

((5 + 1) + (7))/2 

的是,有辦法窩$sum一個$avg裏面還是我只需要返回列表由孩子分組的總和,然後平均他們自己?

回答

2

第一個$sum數據組由childId然後找到$avg的總和。

db.collection.aggregate(
    [ 
     { "$match": { "parentId": 2 }}, 
     { "$group": { "_id": "$childId", "sumdata": { "$sum": "$data" }}}, 
     { "$group": { "_id": "null", "avgdata": { "$avg": "$sumdata" }}}, 
    ] 
) 
{ "avgdata" : 6.5 } 
相關問題