MongoDB aggregate 运用篇(转)
http://www.cnblogs.com/qq78292959/p/4440679.html
- 最近一直在用mongodb,有时候会需要用到统计,在网上查了一些资料,最适合用的就是用aggregate,以下介绍一下自己运用的心得。。 - 别人写过的我就不过多描述了,大家一搜能搜索到N多一样的,我写一下我的总结。 - 基础知识 - 请大家自行查找更多,以下是关键文档。 - 操作符介绍: - $project:包含、排除、重命名和显示字段 - $match:查询,需要同find()一样的参数 - $limit:限制结果数量 - $skip:忽略结果的数量 - $sort:按照给定的字段排序结果 - $group:按照给定表达式组合结果 - $unwind:分割嵌入数组到自己顶层文件 - 文档:MongoDB 官方aggregate说明。 - 相关使用: - db.collection.aggregate([array]); - array可是是任何一个或多个操作符。 - group和match的用法,使用过sqlserver,group的用法很好理解,根据指定列进行分组统计,可以统计分组的数量,也能统计分组中的和或者平均值等。 - group之前的match,是对源数据进行查询,group之后的match是对group之后的数据进行筛选; - 同理,sort,skip,limit也是同样的原理; - 1.- 1- {_id:- 1- ,name:- "a"- ,status:- 1- ,num:- 1- }- 2.- 2- {_id:- 2- ,name:- "a"- ,status:- 0- ,num:- 2- }- 3.- 3- {_id:- 3- ,name:- "b"- ,status:- 1- ,num:- 3- }- 4.- 4- {_id:- 4- ,name:- "c"- ,status:- 1- ,num:- 4- }- 5.- 5- {_id:- 5- ,name:- "d"- ,status:- 1- ,num:- 5- }- 以下是示例: - 应用一:统计name的数量和总数; - db.collection.aggregate([ - {$group:{_id:"$name",count:{$sum:1},total:{$sum:"$num"}} - ]); - 应用二:统计status=1的name的数量; - db.collection.aggregate([ - {$match:{status:1}}, - {$group:{_id:"$name",count:{$sum:1}}} - ]); - 应用三:统计name的数量,并且数量为小于2的; - db.collection.aggregate([ - {$group:{_id:"$name",count:{$sum:1}}, - {$match:{count:{$lt:2}}} - ]); - 应用四:统计stauts=1的name的数量,并且数量为1的; - db.collection.aggregate([ - {$match:{status:1}}, - {$group:{_id:"$name",count:{$sum:1}}}, - {$match:{count:1}} - ]); - 多列group,根据name和status进行多列 - db.collection.aggregate([ - {$group:{_id:{name:"$name",st:"$status"},count:{$sum:1}}} - ]); - $project该操作符很简单, - db.collection.aggregate([ - {$project:{name:1,status:1}} - ]); - 结果是,只有_id,name,status三个字段的表数据,相当于sql表达式 select _id,name,status from collection - $unwind - 这个操作符可以将一个数组的文档拆分为多条文档,在特殊条件下有用,本人暂没有进行过多的研究。 - 以上基本就可以实现大部分统计了,group前条件,group后条件,是重点。 
MongoDB aggregate 运用篇(转)的更多相关文章
- MongoDB aggregate 运用篇
		基础知识 操作符介绍: $project:包含.排除.重命名和显示字段 $match:查询,需要同find()一样的参数 $limit:限制结果数量 $skip:忽略结果的数量 $sort:按照给定的 ... 
- MongoDB aggregate 运用篇 个人总结
		最近一直在用mongodb,有时候会需要用到统计,在网上查了一些资料,最适合用的就是用aggregate,以下介绍一下自己运用的心得.. 别人写过的我就不过多描述了,大家一搜能搜索到N多一样的,我写一 ... 
- MongoDB【第一篇】MongodDB初识
		NoSQL介绍 一.NoSQL简介 NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库. 非关系型数据库主要有这些特点:非关系型的.分布式的.开源的.水平可扩展的. 原始的目的是为 ... 
- MongoDB【第二篇】集群搭建
		第一步:准备 1.安装包 mongodb-linux-x86_64-rhel70-3.4.2.tgz 2. 架构: 本文为 1-primary.1-secondary.1-arbiter 的 mong ... 
- MongoDB【第二篇】MongoDB逻辑与物理存储结构
		基本的操作 一.常用的命令和基础知识 1.进入MongoDB sehll 首先我们进入到MongoDB所在目录执行 cd /work/app/mongodb/bin/ #启动 ./mongo 为了方便 ... 
- MongoDB Aggregate Methods(2) MonoDB 的 3 种聚合函数
		aggregate(pipeline,options) 指定 group 的 keys, 通过操作符 $push/$addToSet/$sum 等实现简单的 reduce, 不支持函数/自定义变量 g ... 
- 【mongoDB运维篇④】Shard 分片集群
		简述 为何要分片 减少单机请求数,降低单机负载,提高总负载 减少单机的存储空间,提高总存空间. 常见的mongodb sharding 服务器架构 要构建一个 MongoDB Sharding Clu ... 
- MongoDB基础一篇就够了
		MongoDB linux安装MongoDB Windows安装MongoDB 查看当前数据库名称 db 查看所有数据库名称 列出所有在物理上存在的数据库 show dbs 切换数据库 如果数据库不存 ... 
- nodejs笔记--与MongoDB的交互篇(七)
		原文地址:http://www.cnblogs.com/zhongweiv/p/node_mongodb.html 目录 简介 MongoDB安装(windows) MongoDB基本语法和操作入门( ... 
随机推荐
- nodemoduleOfCheerio
			https://www.npmjs.com/package/cheerio 这是npm的api说明 英文好的同学可以去看看. cheerioAPI 是一个用来操作jsDOM的模块: 就像jQuery一 ... 
- Docker(一)-Docker介绍
			什么就Docker? Docker是一个开源项目, 诞生于2013年初,最初是dotCloud公司内部的一个业余项目.它基于Google公司推出的Go语言实现.项目后来加入了Linux基金会,遵从了A ... 
- [财务知识]IFRS9
			浅谈IFRS9 2018-07-10 23:15信用/收益 原创申明 本文原创作者为金融监管研究院助理研究员李健,未经授权谢绝转载.引用.抄袭. 引言 2018年6月6日,财政部会计司发布了“关于就& ... 
- python自动化之excel
			import openpyxl wb=openpyxl.load_workbook(r'C:\Users\Administrator\Desktop\sl.xlsx') type(wb) wb.get ... 
- BZOJ4628 BJOI2016IP地址(trie)
			离线,每次修改相当于对该规则的所有匹配点的值+1,考虑在trie上打加法标记和匹配标记,匹配标记不下传,加法标记下传遇到匹配标记时清空.注意是用b时刻前缀-a时刻前缀,而不是(a-1)时刻前缀,具体我 ... 
- log4j 相对路径
			参考: http://elf8848.iteye.com/blog/2008595 log4j.logger.ApiLog=debug,ApiLog log4j.appender.ApiLog=org ... 
- 普通平衡树Treap(含旋转)学习笔记
			浅谈普通平衡树Treap 平衡树,Treap=Tree+heap这是一个很形象的东西 我们要维护一棵树,它满足堆的性质和二叉查找树的性质(BST),这样的二叉树我们叫做平衡树 并且平衡树它的结构是接近 ... 
- Winform Treeview 排序及图标处理
			一.排序 1. 继承 IComparer 2. treeView1.TreeViewNodeSorter = this; 3. 实现IComparer public int Compare(ob ... 
- uva11235 FrequentValues (ST表)
			既然他是非降的,那我们可以把这个序列每一位转化成到这位位置连续相同的个数,比如001111233444变成121234112123,然后一个区间内的最大值就是众数的位数.但有个问题,就是这个区间的左端 ... 
- 'sudo'不是内部或外部命令,,,,的解决办法
			[说明] Windows系统从 Vista 版本开始加入了 UAC 机制,这导致没有足够权限的程序无法获取到一些关键资源.在 Linux 下我们可以使用 sudo 命令方便地提升当前程序的执行权限,但 ... 
