MongoDB-管道与聚合(3)
分组:$group()
-- 统计男生,女生各是多少
db.stu.aggregate(
{$group:{_id:'$gender', count:{$sum:1}}}
)
--求学生的总人数和平均年龄
db.stu.aggregate(
{$group:{_id:null, count:{$sum:1}, avg_scroe:{$avg:'$age'}}}
)
透视数据: $push统计函数
-- 统计不同性别的学生姓名
db.stu.aggregate(
{$group:{_id:'$gender', name:{$push:'$name'}}}
)
过滤:$match
-- 查询年龄大于20的学生
db.stu.aggregate(
{$match:{age:{$gt:20}}}
)
--查询年龄大于20的男生与女生人数
db.stu.aggregate(
{$match:{age:{$gt:20}}},
{$group:{_id:'$gender',counter:{$sum:1}}}
)
修改文档结构: $project
--查询 只显示学生的姓名,年龄
db.stu.aggregate({$project:{_id:0, name:1, age:1}})
--查询男生,女生人数, 只输出性别和人数
db.stu.aggregate(
{$group:{_id:'$gender', count:{$sum:1}}},
{$project:{_id:0,gender:'$_id', count:1}}
)
排序$sort()
--查询学生信息, 按年龄升序排列
db.stu.aggregate(
{$sort:{age:1}}
)
-- 查询男生和女生人数, 按人数降序排
db.stu.aggregate(
{$group:{_id:'$gender', count:{$sum:1}}},
{$project:{_id:0,gender:'$_id', count:1}},
{$sort:{count:-1}}
)
$skip&$limit
--查询从第3条开始的学生信息
--$limit: 限制聚合管道返回的文档数量
db.stu.aggregate({$skip:2})
--查询2条学生信息
db.stu.aggregate({$limit:2})
--统计男生,女生人数, 按人数升序, 取出第二条数据
db.stu.aggregate(
{$group:{_id:'$gender', count:{$sum:1}}},
{$sort:{count:1}},
{$skip:1},
{$limit:1}
)
$unwind
db.t3.insert({_id:1,item:'t-shirt',size:['S','M','L']})
--$unwind 将集合拆分
db.t3.aggregate({$unwind:'$size'})
{ "_id" : 1, "item" : "t-shirt", "size" : "S" }
{ "_id" : 1, "item" : "t-shirt", "size" : "M" }
{ "_id" : 1, "item" : "t-shirt", "size" : "L" }
])
MongoDB-管道与聚合(3)的更多相关文章
- MongoDB学习笔记——聚合操作之聚合管道(Aggregation Pipeline)
MongoDB聚合管道 使用聚合管道可以对集合中的文档进行变换和组合. 管道是由一个个功能节点组成的,这些节点用管道操作符来进行表示.聚合管道以一个集合中的所有文档作为开始,然后这些文档从一个操作节点 ...
- 在MongoDB中实现聚合函数
在MongoDB中实现聚合函数 随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加. ...
- mongodb与sql聚合对应图 M
mongodb与sql聚合对应图 M - CSDN博客 http://blog.csdn.net/u011930016/article/details/49422425 SQL Terms, Func ...
- MongoDB第三天(正则,管道,聚合,字符串,算术,日期,java连接MongoDB)
部分正则表达式: i:忽略大小写 m:多行查找 x:设置 x 选项后,正则表达式中的非转义的空白字符将被忽略. s:允许点字符(即.)匹配包括换行符在内的所有字符. w:匹配包括下划线的任何单词字 ...
- MongoDB小结27 - 聚合管道【$project】
我们有这样的数据 { "_id" : 1, title: "abcdef", isbn: "6969696969", author: { l ...
- Mongodb - 解决 ( aggregate聚合管道 ) $match 根据 id 匹配 返回 [ ] 的问题
需要对 id 进行转换 const mongoose = require('mongoose') var ObjectId = mongoose.Types.ObjectId; await Use ...
- MongoDB的学习--聚合
最近要去的新项目使用mysql,趁着还没忘记,总结记录以下MongoDB的聚合. 聚合是泛指各种可以处理批量记录并返回计算结果的操作.MongoDB提供了丰富的聚合操作,用于对数据集执行计算操作.在 ...
- MongoDB的aggregate聚合
聚合框架中常用的几个操作: $project:修改输入文档的结构.可以用来重命名.增加或删除域,也可以用于创建计算结果以及嵌套文档.(显示的列,相当遇sql 的) $match:用于过滤数据,只输出符 ...
- MongoDB中的聚合操作
根据MongoDB的文档描述,在MongoDB的聚合操作中,有以下五个聚合命令. 其中,count.distinct和group会提供很基本的功能,至于其他的高级聚合功能(sum.average.ma ...
- Python全栈 MongoDB 数据库(聚合、二进制、GridFS、pymongo模块)
断网了2天 今天补上 聚合操作: 对文档的信息进行整理统计的操作 返回:统计后的文档集合 db.collection.aggregate() 功能:聚合函数,完成聚合操作 参数:聚合条件,配 ...
随机推荐
- Beautiful Soup (一)
一.Beautiful Soup库的理解 1.Beautiful Soup库可以说是对HTML进行解析.遍历.维护“标签树”的功能库 2.pip install bs4 3.from bs4 impo ...
- 基于bootstrap的multiple-select下拉控件使用
multiple-select是一款优秀的下拉菜单控件,能够支持单选和多选. 详细参考文档: JS组件系列——两种bootstrap multiselect组件大比拼 multiple-select ...
- jqgrid 宽度自适应
当jqgrid所在操作区宽度大于了给各列设置宽度之和时,此时表格的宽度未铺满操作区,效果不理想 此时,可以通过配置宽带自适应来现实表格内容自动铺满. 配置属性 shrinkToFit:ture 若要启 ...
- 在main函数前后执行的函数之 C语言
在gcc中,可以使用attribute关键字,声明constructor和destructor,来指定了函数在main之前或之后运行,代码如下: #include <stdio.h> __ ...
- ccf201703-2学生排队
问题描述 体育老师小明要将自己班上的学生按顺序排队.他首先让学生按学号从小到大的顺序排成一排,学号小的排在前面,然后进行多次调整.一次调整小明可能让一位同学出队,向前或者向后移动一段距离后再插入队列. ...
- 20155211 Exp5 MSF基础应用
20155211 Exp5 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode? exploit:漏洞攻击.一个exploit程序肯定会触发系统的一个或多个 ...
- 网络对抗技术 2017-2018-2 20152515 Exp6 信息搜集与漏洞扫描
1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法.包括: (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的 ...
- 20155302《网络对抗》Exp4 恶意代码分析
20155302<网络对抗>Exp4 恶意代码分析 实验要求 •是监控你自己系统的运行状态,看有没有可疑的程序在运行. •是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工 ...
- 20155325 Exp9 Web安全基础
本实践的目标理解常用网络攻击技术的基本原理.Webgoat实践下相关实验. 实验后回答问题 (1)SQL注入攻击原理,如何防御 原理:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击 ...
- Kubernetes学习之路目录
Kubernetes基础篇 环境说明 版本说明 系统环境 Centos 7.2 Kubernetes版本 v1.11.2 Docker版本 v18.09 Kubernetes学习之路(一)之概念和架构 ...