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() 功能:聚合函数,完成聚合操作 参数:聚合条件,配 ...
随机推荐
- AMD、CMD和Common规范
1.名词解释AMD:Asynchronous Modules Definition异步模块定义,提供定义模块及异步加载该模块依赖的机制.CMD:Common Module Definition 通用模 ...
- C++之构造函数拷贝
拷贝构造函数,顾名思义,就是通过拷贝对象的方式创建一个新对象.拷贝构造函数有两种原型(我们继续以book类来说明拷贝构造函数原型): book(book &b); book(const boo ...
- Java IO 文件
在java应用程序中,文件是一种常用的数据源或者存储数据的媒介.所以这一小节将会对Java中文件的使用做一个简短的概述.这里只提供一些必要的知识点. 通过Java IO读文件 如果你需要在不同端之间读 ...
- 20155229《网络对抗技术》Exp3:免杀原理与实践
实验预习 免杀: 看为一种能使病毒木马避免被杀毒软件查杀的技术. 免杀的分类: 开源免杀:指在有病毒.木马源代码的前提下,通过修改源代码进行免杀.. 手工免杀:指在仅有病毒.木马的可执行文件(.exe ...
- 微信小程序之用户信息授权 wx.getUserInfo
用户授权 <button open-type="getUserInfo" bindgetuserinfo='getUser'>授权用户信息</button> ...
- pycharm如何全局进行查找一个关键词
PyCharm的Find in Path功能提供了全局查找功能,快捷键为Ctrl + Shift + F.Find则是在当前文件查找,快捷键为Ctrl + F.这两个个功能非常实用. Find in ...
- python中的and和or用法
在python中and和or返回的值并不是True和false这么简单.虽然他们看上去和c++中的&&和||有些相似.在了解and和or之前,我们先要了解python中的True和Fa ...
- SSIS 遍历目录,把文件内容导入数据库
最近接手一个项目,程序的基本框架是:程序A导出数据,以.tsv格式存储,数据列之间以tab间隔:程序B吃文档,把数据导入到数据库中,并把处理过的文档备份/移动到指定的目录中.为了快速开发,程序B设计成 ...
- LeetCode 3Sum (Two pointers)
题意 Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all ...
- MFC学习笔记(一): 不用MFC向导如何新建一个MFC程序
使用Visual Studio新建一个空项目,项目命名为HelloMFC,完成后,打开项目属性页面,将配置属性选项卡中的常规项打开,将其中的MFC的使用属性栏改为:在静态库中使用MFC或者在共享DLL ...