mongodb--group聚合运算
- mongodb本质就是要做一个高性能,能简单则简单,不要把mongodb中的运算做的太复杂
- count 最简单的一个聚合方法
- distinct 选择结果中剔除重复的一个键值, 跟sql语句的效果是一样的
db.person.distinct("age")
- group 【能不用则不用】 sql的group by
有点像 “AOP“ 编程
db.person.group({
"key":{age:1},
initial:{count:0},
reduce:function(current,aggr){aggr.count++}
})
db.person.group({
... "key":{age:1},
... initial:{count:0},
... reduce:function(current,aggr){aggr.count++}
... })
[
{
"age" : 26,
"count" : 2
},
{
"age" : 29,
"count" : 2
},
{
"age" : 31,
"count" : 2
}
]
{age:26,count:2}
{age:29,count:2}
{age:31,count:2}
再复杂一点:
cond:我们踢掉小于28的数据,那么这时候就只有两个结果了。。。
db.person.group({
"key":{age:1},
initial:{count:0},
reduce:function(current,aggr){aggr.count++},
cond:{"$where":function(){return this.age>28}}
})
db.person.group({
... "key":{age:1},
... initial:{count:0},
... reduce:function(current,aggr){aggr.count++},
... cond:{"$where":function(){return this.age>28}}
... })
[ { "age" : 29, "count" : 2 }, { "age" : 31, "count" : 2 } ]
再复杂一点:
finalizer:
db.person.group({
"key":{age:1},
initial:{count:0},
reduce:function(current,aggr){aggr.count++},
cond:{"$where":function(){return this.age>28}},
finalize:function(current){ return {"age":current.age,"count":current.count,"xxxx":20}}
})
db.person.group({
"key":{age:1},
initial:{count:0},
reduce:function(current,aggr){aggr.count++},
cond:{"$where":function(){return this.age>28}},
finalize:function(current){ current.xxxx=22; return current;}
})
[ { "age" : 29, "count" : 2,"xxxx":20 }, { "age" : 31, "count" : 2,"xxxx":20 } ]
mongodb--group聚合运算的更多相关文章
- MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)
聚合运算之group 语法: db.collection.group( { key:{key1:1,key2:1}, cond:{}, reduce: function(curr,result) { ...
- MongoDB 学习笔记之 group聚合
group聚合: key: 分组字段 cond:过滤条件 reduce: curr是当前行 result是每组的结果集 initial : 组变量初始值 finalize: 统计一组后的回调函数 用g ...
- 【翻译】MongoDB指南/聚合——聚合管道
[原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...
- MongoDB数据库聚合
前面的话 聚合操作主要用于对数据的批量处理,将记录按条件分组以后,然后再进行一系列操作,例如,求最大值.最小值.平均值,求和等操作.聚合操作还能够对记录进行复杂的操作,主要用于数理统计和数据挖掘.在 ...
- MongoDB,分组,聚合
使用聚合,db.集合名.aggregate- 而不是find 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数.MongoDB的聚合管道将MongoDB文档在一个管道处理完 ...
- mongodb高级聚合查询
在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...
- Yii2的mongodb的聚合操作
最近项目使用到mongodb的聚合操作,但是yii文档中对这方面资料较少,记录下 $where['created_time'] = ['$gt' => "$start_date_str ...
- mongodb高级聚合查询(转)
在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...
- MongoDb进阶实践之八 MongoDB的聚合初探
一.引言 好久没有写东西了,MongoDB系列的文章也丢下好长时间了.今天终于有时间了,就写了一篇有关聚合的文章.一说到“聚合”,用过关系型数据库的人都应该知道它是一个什么东西.关系型数据库有“聚合” ...
随机推荐
- MVC + Redis
net MVC + Redis(hash入库+log4net集成) https://www.cnblogs.com/hoyu/p/9063675.html 博客四元素 既然要写一个博客类的网站,那就应 ...
- 电脑升级win10后visio的问题
上周由于电脑意外蓝屏,系统从win7升级到了win10,昨天工作写文档时才发现缺少画图的工具,于是按照了visio2013,在编辑设计图时发现,一旦用visio打开或编辑图后再到word里设计图的内容 ...
- bzoj1231 [Usaco2008 Nov]mixup2 混乱的奶牛——状压DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1231 小型状压DP: f[i][j] 表示状态为 j ,最后一个奶牛是 i 的方案数: 所以 ...
- A Reusable Aspect for Memory Allocation Checking
The checking logic would be refactored into an aspect file, as follows: after(void * s) : (call($ ma ...
- 基于Myeclipse+Axis2的WebService开发实录
最近开始学习了下在Myeclipse开发工具下基于WebSerivce的开发,下面将相关相关关键信息予以记录 Myeclipse的安装,本文以Myeclipse2014-blue为开发环境,相关配置执 ...
- 解决QQ未启用状态,QQ留言图标未启用
最近由于腾讯升级QQ一些东西,导致QQ图标成未启用状态:如图 解决方法,到腾讯此站点登陆一下即可, http://wp.qq.com/set.html 另外设置 没有保存按钮,如果选择完全公开,到自己 ...
- 关于如何将_variant_t型转化为int型和string类型
1)将_variant_t型转化为int型 关于将_variant_t型转化为int型,网上有好多好多参考,但好多都很复杂并且还不对,其实整个转化过程就只一行代码可以搞定: _variant_t a; ...
- background使用
background-position 有两个参数,定义背景图片起始位置可选值有: center top left right bottom px % background-size 可以用 px % ...
- SQL SERVER 2000 如何提高大数据筛选GROUP BY 的效率
数据库有83W条记录,本想计算20180101之后的每天赔付情况,故写了以下SQL语句: SELECT 起保时间,sum(赔付金额) as 日赔付 FROM maindata WHERE 起保时间&g ...
- java Web(4)
Web 应用程序状态管理 通过隐藏表单域 hidden,cookie,session,重写URL来实现: cookie存在于客户端,浏览器关闭时失效 cookie原理:服务器在响应请求时将一些数据以“ ...