我怎样才能找到一个字段的总和的平均值?
how can I find the average of the sums of a field?
我有这样的文件
{ parentId: 2, childId: 4, data: 7 },
{ parentId: 2, childId: 3, data: 5 },
{ parentId: 2, childId: 3, data: 1 }
我想提取按 childId 分组的数据总和的平均值,其中 parentId = 特定 ID。
例如,我想通过给定父 ID (2) return 的数据是
((5 + 1) + (7)) / 2
有没有办法将 $sum
嵌套在 $avg
中,或者我只需要 return 一个按 childId 分组的总和列表,然后自己对它们进行平均?
首先 $sum
数据按 childId
分组,然后找到总和的 $avg
。
db.collection.aggregate(
[
{ "$match": { "parentId": 2 }},
{ "$group": { "_id": "$childId", "sumdata": { "$sum": "$data" }}},
{ "$group": { "_id": "null", "avgdata": { "$avg": "$sumdata" }}},
]
)
{ "avgdata" : 6.5 }
我有这样的文件
{ parentId: 2, childId: 4, data: 7 },
{ parentId: 2, childId: 3, data: 5 },
{ parentId: 2, childId: 3, data: 1 }
我想提取按 childId 分组的数据总和的平均值,其中 parentId = 特定 ID。
例如,我想通过给定父 ID (2) return 的数据是
((5 + 1) + (7)) / 2
有没有办法将 $sum
嵌套在 $avg
中,或者我只需要 return 一个按 childId 分组的总和列表,然后自己对它们进行平均?
首先 $sum
数据按 childId
分组,然后找到总和的 $avg
。
db.collection.aggregate(
[
{ "$match": { "parentId": 2 }},
{ "$group": { "_id": "$childId", "sumdata": { "$sum": "$data" }}},
{ "$group": { "_id": "null", "avgdata": { "$avg": "$sumdata" }}},
]
)
{ "avgdata" : 6.5 }