对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

$avg (表达式)

$avg

返回数值大量元素的平均值。

注意

消歧

本页介绍了用作表达式时的 $avg,该表达式返回大量中数字元素的平均值。

您还可以在其他上下文中使用 $avg:

用作表达式时,$avg 采用以下语法之一:

{ $avg: <expression> }

在此语法中,操作数是解析为大量的单个表达式。 $avg 遍历大量并返回数组数值的平均值。示例,{ $avg: "$testScores" } 返回 testScores大量字段中数值的平均值。

{ $avg: [ <expression1>, <expression2> ... ] }

在此语法中,输入大量中的每个表达式都是单个数值。 $avg 返回各个输入值的平均值。如果任何输入表达式解析为大量,则 $avg 不会遍历该大量,而是将该大量视为非数字值。

默认返回类型为双精度值。如果至少一个输入值为十进制,则返回类型为十进制。

$avg 忽略非数字值,包括缺失值。如果所有输入值都是非数字值,则 $avg 返回 null。

使用以下文档创建 students 集合:

db.students.insertMany( [
{ _id: 1, quizzes: [ 10, 6, 7 ], labs: [ 5, 8 ], final: 80, midterm: 75 },
{ _id: 2, quizzes: [ 9, 10 ], labs: [ 8, 8 ], final: 95, midterm: 80 },
{ _id: 3, quizzes: [ 4, 5, 5 ], labs: [ 6, 5 ], final: 78, midterm: 70 }
] )

以下操作在 $project 阶段使用 $avg 来计算以下字段的平均值:

  • quizzes

  • labs

  • final 和 midterm 的合并平均值

db.students.aggregate( [
{
$project: {
quizAvg: { $avg: "$quizzes"},
labAvg: { $avg: "$labs" },
examAvg: { $avg: [ "$final", "$midterm" ] }
}
}
] )

输出

[
{ _id: 1, quizAvg: 7.666666666666667, labAvg: 6.5, examAvg: 77.5 },
{ _id: 2, quizAvg: 9.5, labAvg: 8, examAvg: 87.5 },
{ _id: 3, quizAvg: 4.666666666666667, labAvg: 5.5, examAvg: 74 }
]
给本页内容打分