对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

$avg(累加器操作符)

$avg

返回文档组中数值的平均值。

$avg 累加器可在以下阶段使用:

注意

消歧

本页介绍了 $avg 用作 累加器 时的情况。累加器对一组输入文档返回单个聚合值,如总和、最大值或最小值。

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

{ $avg: <expression> }

默认返回类型是 double。如果至少有一个输入值是 decimal,则返回类型为 decimal。

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

如果操作数解析为数组,则 $avg 将操作数视为非数值。

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

db.sales.insertMany( [ { _id: 1, item: "abc", price: 10, quantity: 2, date: ISODate("2014-01-01T08:00:00Z") }, { _id: 2, item: "jkl", price: 20, quantity: 1, date: ISODate("2014-02-03T09:00:00Z") }, { _id: 3, item: "xyz", price: 5, quantity: 5, date: ISODate("2014-02-03T09:05:00Z") }, { _id: 4, item: "abc", price: 10, quantity: 10, date: ISODate("2014-02-15T08:00:00Z") }, { _id: 5, item: "xyz", price: 5, quantity: 10, date: ISODate("2014-02-15T09:12:00Z") }] )

操作如下:

  1. 按 item 字段对文档分组。

  2. 使用 $avg 累加器来计算每组的平均金额和平均数量。

db.sales.aggregate( [ { $group: { _id: "$item", avgAmount: { $avg: { $multiply: [ "$price", "$quantity" ] } }, avgQuantity: { $avg: "$quantity" } } } ])

输出:

[ { _id: 'xyz', avgAmount: 37.5, avgQuantity: 7.5 }, { _id: 'abc', avgAmount: 60, avgQuantity: 6 }, { _id: 'jkl', avgAmount: 20, avgQuantity: 1 }]
给本页内容打分