Mongodb:如何计算字段的平均值
可以使用以下方法来计算MongoDB中某个字段的平均值:
方法一:计算场平均值
db.collection.aggregate([{ $group : {_id: null , avg_val:{$avg: " $valueField "}}}])
方法2:计算每组的场平均值
db.collection.aggregate([{ $group : {_id: " $groupField ", avg_val:{$avg: " $valueField "}}}])
以下示例展示了如何通过收集团队使用每种方法并提供以下文档:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8}) db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 12}) db.teams.insertOne({team: " Spurs ", points: 20, rebounds: 7}) db.teams.insertOne({team: " Spurs ", points: 25, rebounds: 5}) db.teams.insertOne({team: " Spurs ", points: 25, rebounds: 9})
示例 1:计算字段平均值
我们可以使用下面的代码来计算点场的平均值:
db.teams.aggregate([{ $group : {_id: null , avg_val:{$avg: " $points "}}}])
该查询返回以下结果:
{ _id: null , avg_val: 26 }
从结果中我们可以看到,点字段的平均值为26 。
我们可以通过手动平均点值来手动验证这是否正确:
平均分:(30 + 30 + 20 + 25 + 25) / 5 = 26 。
示例2:按组计算场均值
我们可以使用下面的代码来计算点字段的平均值,并按团队字段分组:
db.teams.aggregate([{ $group : {_id: " $team ", avg_val:{$avg: " $points "}}}])
该查询返回以下结果:
{ _id: ' Spurs ', avg_val: 23.333333333333332 } { _id: ' Mavs ', avg_val: 30 }
从结果我们可以看出:
- 马刺队的平均得分为23.33 。
- 小牛队的平均分值为30 。
注意:您可以在此处找到$avg函数的完整文档。
其他资源
以下教程解释了如何在 MongoDB 中执行其他常见操作:
MongoDB:如何添加新字段
MongoDB:如何删除字段
MongoDB:如何分组和计数
MongoDB:如何按多个字段分组