我的文档看起来像这样
{ 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分组的总和列表,然后自己平均一下?
答案 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 }