《MongoDB入门教程》第26篇 聚合统计之$max/$min表达式
Posted 不剪发的Tony老师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《MongoDB入门教程》第26篇 聚合统计之$max/$min表达式相关的知识,希望对你有一定的参考价值。
本文将会介绍两个 MongoDB 表达式,返回一组数据中最大值的 $max 表达式,以及返回一组数据中最小值的 $min 表达式。
$max 表达式
$max 表达式用于返回一组数据中的最大值,语法如下:
$max: <expression>
$max 表达式在执行操作时会忽略 null 或者缺失的数据。
如果表达式的参数全部为 null 或者缺失的数据,$max 表达式将会返回 null。
$max 示例
首先创建以下 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")
]);
以下示例使用 $max 表达式查找所有文档中的最大销量:
db.sales.aggregate([
$group:
_id: null,
maxQty: $max: '$quantity' ,
,
,
$project:
_id: 0,
,
,
]);
返回结果如下:
[ maxQty: 30 ]
以下示例使用 $max 表达式查找不同产品的最大销量:
db.sales.aggregate([
$group:
_id: '$item',
maxQty: $max: '$quantity' ,
,
,
]);
返回结果如下:
[
_id: 'Mochas', maxQty: 11 ,
_id: 'Americanos', maxQty: 22 ,
_id: 'Lattes', maxQty: 30 ,
_id: 'Cappuccino', maxQty: 20
]
以下示例使用 $max 表达式查找不同产品的最大销售金额:
db.sales.aggregate([
$group:
_id: '$item',
maxQty: $max: $multiply: ['$quantity', '$price'] ,
,
,
]);
返回结果如下:
[
_id: 'Mochas', maxQty: 275 ,
_id: 'Cappuccino', maxQty: 170 ,
_id: 'Americanos', maxQty: 210 ,
_id: 'Lattes', maxQty: 750
]
$min 表达式
MongoDB $min 表达式可以返回一组数据中的最小值,语法如下:
$min: <expression>
$min 表达式在执行操作时会忽略 null 或者缺失的数据。
如果表达式的参数全部为 null 或者缺失的数据,$min 表达式将会返回 null。
$min 示例
以下示例使用 $min 表达式查找所有文档中的最小销量:
db.sales.aggregate([
$group:
_id: null,
maxQty: $min: '$quantity' ,
,
,
$project:
_id: 0,
,
,
]);
返回结果如下:
[ minQty: 11 ]
以下示例使用 $max 表达式查找不同产品的最小销量:
db.sales.aggregate([
$group:
_id: '$item',
minQty: $min: '$quantity' ,
,
,
]);
返回结果如下:
[
_id: 'Mochas', minQty: 11 ,
_id: 'Americanos', minQty: 12 ,
_id: 'Lattes', minQty: 25 ,
_id: 'Cappuccino', minQty: 12
]
以下示例使用 $max 表达式查找不同产品的最小销售金额:
db.sales.aggregate([
$group:
_id: '$item',
maxQty: $min: $multiply: ['$quantity', '$price'] ,
,
,
]);
返回结果如下:
[
_id: 'Cappuccino', minQty: 72 ,
_id: 'Americanos', minQty: 110 ,
_id: 'Lattes', minQty: 375 ,
_id: 'Mochas', minQty: 275
]
以上是关于《MongoDB入门教程》第26篇 聚合统计之$max/$min表达式的主要内容,如果未能解决你的问题,请参考以下文章
《MongoDB入门教程》第23篇 聚合统计之$sum表达式
《MongoDB入门教程》第23篇 聚合统计之$sum表达式