如何找到字段总和的平均值?

时间:2015-05-14 01:03:17

标签: mongodb aggregation-framework

我的文档看起来像这样

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

我想提取由childId分组的数据总和的平均值,其中parentId =特定ID。

例如,我希望通过给定父ID(2)返回的数据是

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

是否有办法将$sum嵌套在$avg内,或者我只需要返回由childId分组的总和列表,然后自己平均一下?

1 个答案:

答案 0 :(得分: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 }