《MongoDB入门教程》第26篇 聚合统计之$max/$min表达式
创始人
2024-05-27 01:01:29
0

本文将会介绍两个 MongoDB 表达式,返回一组数据中最大值的 $max 表达式,以及返回一组数据中最小值的 $min 表达式。

$max 表达式

$max 表达式用于返回一组数据中的最大值,语法如下:

{ $max:  }

$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:  }

$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 }
]

相关内容

热门资讯

什么是迷失 什么是迷失迷失可以分为很多种,有你在人生的路口不知道你应该去哪,或者是你遇到你什么事的时候不知道怎样...
健康观是指人们对什么的认识? 健康观是指人们对什么的认识?健康观就是指人们对建康理解的一种观念,包括疾病预防控制,养生之道的一些认...
洗菜的时候加盐水、碱水、小苏打... 洗菜的时候加盐水、碱水、小苏打哪个效果更好,更卫生?我个人认为盐是最有效而且更健康的。因为盐也是有消...
饶雪漫的那些书拍了电影? 饶雪漫的那些书拍了电影?除了沙漏的爱、左耳听见、马卓、小妖的金色城堡。还有什么??糖衣和甜酸电影版什...
蜜雪冰城食品安全问题受关注 蜜... 【#蜜雪冰城食品安全问题受关注# 蜜雪冰城被曝员工用脚关直饮水桶】#加盟模式或给蜜雪冰城带来食安风险...
重点事项常态化推进!“高效办成... 来源:新华社 国务院办公厅印发的《关于健全“高效办成一件事”重点事项常态化推进机制的意见》7月8日对...
全球首艘自航封闭式 三文鱼养殖... 转自:千龙网记者7月3日获悉,全球首艘自航封闭式三文鱼养殖工船“苏海1号”近日在广东省广州市南沙区正...
享界品牌车标发布,第二款车预计...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! “我们一直在思考,如...
紫牛热点∣分5次盗走公司191... 转自:扬子晚报扬子晚报网7月8日讯(记者 郭一鹏) 因打赏女主播、结婚急需用钱,陶某产生盗窃其所在单...