《MongoDB入门教程》第25篇 聚合统计之$avg表达式
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《MongoDB入门教程》第25篇 聚合统计之$avg表达式相关的知识,希望对你有一定的参考价值。
本文将会介绍如何利用 $avg 表达式返回一组数字的平均值。
$avg 表达式
MongoDB $avg 表达式的作用是返回一组数据的平均值,语法如下:
$avg: <expression>
$avg 表达式将会忽略任何非数字数据和缺失的数据。如果所有的数据都是非数字数据,表达式将会返回 null。
$avg 示例
以下示例将会使用 sales 集合:
db.sales.insertMany([
"_id" : 1, "item" : "Americanos", "price" : 5, "size": "Short", "quantity" : 22, "date" : ISODate("2022-01-15T08:00:00Z") ,
"_id" : 2, "item" : "Cappuccino", "price" : 6, "size": "Short","quantity" : 12, "date" : ISODate("2022-01-16T09:00:00Z") ,
"_id" : 3, "item" : "Lattes", "price" : 15, "size": "Grande","quantity" : 25, "date" : ISODate("2022-01-16T09:05:00Z") ,
"_id" : 4, "item" : "Mochas", "price" : 25,"size": "Tall", "quantity" : 11, "date" : ISODate("2022-02-17T08:00:00Z") ,
"_id" : 5, "item" : "Americanos", "price" : 10, "size": "Grande","quantity" : 12, "date" : ISODate("2022-02-18T21:06:00Z") ,
"_id" : 6, "item" : "Cappuccino", "price" : 7, "size": "Tall","quantity" : 20, "date" : ISODate("2022-02-20T10:07:00Z") ,
"_id" : 7, "item" : "Lattes", "price" : 25,"size": "Tall", "quantity" : 30, "date" : ISODate("2022-02-21T10:08:00Z") ,
"_id" : 8, "item" : "Americanos", "price" : 10, "size": "Grande","quantity" : 21, "date" : ISODate("2022-02-22T14:09:00Z") ,
"_id" : 9, "item" : "Cappuccino", "price" : 10, "size": "Grande","quantity" : 17, "date" : ISODate("2022-02-23T14:09:00Z") ,
"_id" : 10, "item" : "Americanos", "price" : 8, "size": "Tall","quantity" : 15, "date" : ISODate("2022-02-25T14:09:00Z")
]);
示例一:平均销售数量
以下示例将文档按照T item 字段进行分组,然后使用 $avg 表达式计算每个组的平均销售数量:
db.sales.aggregate([
$group:
_id: '$item',
averageQty: $avg: '$quantity' ,
,
,
]);
输出结果如下:
[
_id: 'Americanos', averageQty: 17.5 ,
_id: 'Lattes', averageQty: 27.5 ,
_id: 'Mochas', averageQty: 11 ,
_id: 'Cappuccino', averageQty: 16.333333333333332
]
示例二:平均销售金额
以下示例将文档按照T item 字段进行分组,然后使用 $avg 表达式计算每个组的平均销售金额:
db.sales.aggregate([
$group:
_id: '$item',
averageAmount: $avg: $multiply: ['$quantity', '$price'] ,
,
,
$sort: averageAmount: 1 ,
])
返回结果如下:
[
_id: 'Cappuccino', averageAmount: 127.33333333333333 ,
_id: 'Americanos', averageAmount: 140 ,
_id: 'Mochas', averageAmount: 275 ,
_id: 'Lattes', averageAmount: 562.5
]
示例三:平均值与过滤
以下示例使用 $avg 表达式计算每个组的平均销售金额,并且返回了平均销售金额大于 150 的产品:
db.sales.aggregate([
$group:
_id: '$item',
averageAmount: $avg: $multiply: ['$quantity', '$price'] ,
,
,
$match: averageAmount: $gt: 150 ,
$sort: averageAmount: 1 ,
]);
返回的结果如下:
[
_id: 'Mochas', averageAmount: 275 ,
_id: 'Lattes', averageAmount: 562.5
]
以上是关于《MongoDB入门教程》第25篇 聚合统计之$avg表达式的主要内容,如果未能解决你的问题,请参考以下文章
《MongoDB入门教程》第23篇 聚合统计之$sum表达式
《MongoDB入门教程》第23篇 聚合统计之$sum表达式