当前位置:网站首页>MongoDB中的聚合-管道
MongoDB中的聚合-管道
2022-08-08 06:23:00 【编程工人】
MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。
MongoDB中聚合的方法使用aggregate()。
语法:
1 |
|
实例,集合中的数据如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
现在我们通过以上集合计算每个作者所写的文章数,使用aggregate()计算结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
以上实例类似sql语句: select by_user, count(*) from mycol group by by_user
在上面的例子中,我们通过字段by_user字段对数据进行分组,并计算by_user字段相同值的总和。
下表展示了一些聚合的表达式:
$sum计算总和。
1 |
|
$avg计算平均值
1 |
|
$min获取集合中所有文档对应值得最小值。
1 |
|
$max获取集合中所有文档对应值得最大值。
1 |
|
$push在结果文档中插入值到一个数组中。
1 |
|
$addToSet在结果文档中插入值到一个数组中,但不创建副本。
1 |
|
$first根据资源文档的排序获取第一个文档数据。
1 |
|
$last根据资源文档的排序获取最后一个文档数据
1 |
|
管道的概念
管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。
这里我们介绍一下聚合框架中常用的几个操作:
1 2 3 4 5 6 7 8 |
|
$project实例
1 2 3 4 5 6 |
|
这样的话结果中就只还有_id,tilte和author三个字段了,默认情况下_id字段是被包含的,如果要想不包含_id话可以这样:
1 2 3 4 5 6 |
|
$match实例
1 2 3 4 |
|
$match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。
$skip实例
1 2 |
|
经过$skip管道操作符处理后,前五个文档被"过滤"掉。
边栏推荐
猜你喜欢

C语言三子棋游戏进阶版详解(包括多子棋)
![[WUSTCTF2020]CV Maker1](/img/be/989b1ea8597f31f4b82c2edc6345d5.png)
[WUSTCTF2020]CV Maker1

Lamp analysis: LED lamps are expected to reach $45.9 billion in 2028

一.Redis 概述

mycmsms靶机wp

COSMIC: COmmonSense knowledge for eMotion Identification in Conversations

Market Research: In-depth Analysis and Development Prospect Report of Metal Furniture Industry in 2022

原型与原型链

消费品行业报告:化妆品容器市场现状研究分析与发展前景预测

Variational Inference with Normalizing Flows变分推断
随机推荐
分布式系统API网关原理及选型
九.Redis 集群(cluster 模式)
[极客大挑战 2019]RCE ME 1
List扩容机制
五.Redis_事务秒杀案例
聊一聊数据库中的锁
4.MySQL索引优化实战
【熬夜整理近百份大厂面经】2022校招提前批面经总结分享(腾讯、字节、阿里、百度、京东等招聘信息+必考点+简历书写)
改变this指向
Flask学习笔记
CUDA10安装支持gpu的tensorflow版本
节流与防抖
原型与原型链
市场调研报告-食品添加剂行业产量为974万吨
数组对象方法
JS截取字符串最后一个字符,截取“,”逗号前面字符,赋值集合
栈的实例应用
Consumer Goods Industry Report: Research Analysis and Development Prospect Forecast of Cosmetic Container Market Status
redis 缓存穿透、缓存击穿、缓存雪崩区别和解决方案
有哪些可以“躺平”的技术开发岗位?------音视频开发畅谈