当前位置: 首页 > news >正文

《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 }
]
http://www.lryc.cn/news/21307.html

相关文章:

  • FPGA纯verilog解码SDI视频 纯逻辑资源实现 提供2套工程源码和技术支持
  • JVM篇之垃圾回收
  • 尝试用程序计算Π(3.141592653......)
  • 【异常检测三件套】系列3--时序异常检测综述
  • 关于SAP 错误日志解析
  • java:自定义变量加载到系统变量后替换shell模版并执行shell
  • Redis高级删除策略与数据淘汰
  • 社畜大学生的Python之pandas学习笔记,保姆入门级教学
  • 20_FreeRTOS低功耗模式
  • Hive的使用方式
  • Flume三大核心组件
  • 数据结构(六)二叉树
  • Docker buildx 的跨平台编译
  • 【java基础】方法重载和方法重写
  • Gradle7.4安装与基本使用
  • [系统安全] 虚拟化安全之虚拟化概述
  • 如何从零开始系统的学习项目管理?
  • 面试题-----
  • 线材-电子线载流能力
  • 单变量回归问题
  • ubuntu/linux系统知识(36)linux网卡命名规则
  • java的一些冷知识
  • java代理模式
  • JUC包:CountDownLatch源码+实例讲解
  • Log4j2基本使用
  • A2L在CAN FD总线的使用
  • Android JetPack之启动优化StartUp初始化组件的详解和使用
  • [11]云计算|简答题|案例分析|云交付|云部署|负载均衡器|时间戳
  • C++11/C++14:lambda表达式
  • 算法课堂-分治算法