1. mongodb本质就是要做一个高性能,能简单则简单,不要把mongodb中的运算做的太复杂
  2. count 最简单的一个聚合方法
  3. distinct 选择结果中剔除重复的一个键值, 跟sql语句的效果是一样的
   db.person.distinct("age")
  1. 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聚合运算的更多相关文章

  1. MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)

    聚合运算之group 语法: db.collection.group( { key:{key1:1,key2:1}, cond:{}, reduce: function(curr,result) { ...

  2. MongoDB 学习笔记之 group聚合

    group聚合: key: 分组字段 cond:过滤条件 reduce: curr是当前行 result是每组的结果集 initial : 组变量初始值 finalize: 统计一组后的回调函数 用g ...

  3. 【翻译】MongoDB指南/聚合——聚合管道

    [原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...

  4. MongoDB数据库聚合

    前面的话 聚合操作主要用于对数据的批量处理,将记录按条件分组以后,然后再进行一系列操作,例如,求最大值.最小值.平均值,求和等操作.聚合操作还能够对记录进行复杂的操作,主要用于数理统计和数据挖掘.在 ...

  5. MongoDB,分组,聚合

    使用聚合,db.集合名.aggregate- 而不是find 管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数.MongoDB的聚合管道将MongoDB文档在一个管道处理完 ...

  6. mongodb高级聚合查询

    在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...

  7. Yii2的mongodb的聚合操作

    最近项目使用到mongodb的聚合操作,但是yii文档中对这方面资料较少,记录下 $where['created_time'] = ['$gt' => "$start_date_str ...

  8. mongodb高级聚合查询(转)

    在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...

  9. MongoDb进阶实践之八 MongoDB的聚合初探

    一.引言 好久没有写东西了,MongoDB系列的文章也丢下好长时间了.今天终于有时间了,就写了一篇有关聚合的文章.一说到“聚合”,用过关系型数据库的人都应该知道它是一个什么东西.关系型数据库有“聚合” ...

随机推荐

  1. CodeForces - 749C Voting

    C. Voting time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...

  2. B3403 [Usaco2009 Open]Cow Line 直线上的牛 deque

    deque真的秀,queue和stack...没啥用了啊.操作差不多,就是在前面加一个front||back_就行了. 题干: 题目描述 题目描述     约翰的N只奶牛(编为1到N号)正在直线上排队 ...

  3. Angularjs+Bootstrap实现分页指令

    本插件的开发目的主要给前端同学使用,本人是专注于后台开发的,对css样式不熟悉,但逼于前端要求做一个共公组件方便日常开发,所以这个插件在样式上可能不适合大部分人,喜欢的拿走吧,不喜欢的也请别喷.  一 ...

  4. vs code golang代码自动补全

    “go.useCodeSnippetsOnFunctionSuggest”: true 文件-->首选项--->设置--->用户设置 添加下行:然后就可以自动补全了,包括() “go ...

  5. PCB Genesis增加点阵字 实现原理

    我们采用Genesis增加点阵字时,用Genesis增加Canned Text即可,但奥宝中文不支持,且字符种类是有限的呀 不过没关系,没有自己造呀.在这里我分享一种增加点阵字的实现方法 一.通过代码 ...

  6. iOS 点击事件传递及响应

    1.iOS中的事件 iOS中的事件可以分为3大类型: 触摸事件 加速计事件 远程控制事件这里我们只讨论iOS中的触摸事件. 1.1响应者对象(UIResponder) 在iOS中不是任何对象都能处理事 ...

  7. 基于artDialog的扩展

    /* * * 引用此文件必须引用以下两个资源文件,并且还要引用jQuery * <link href="ui-dialog.css" rel="stylesheet ...

  8. Php.ini文件位置在哪里 Php.ini文件找不到

    转载自:http://www.php100.com/html/php/rumen/2013/0831/26.html [导读] Php ini文件是php的一个配置文件,在windows主机中如果你未 ...

  9. 5.14web相关概念

    1.软件架构 1.C/S:客户端/服务器端 2.B/S:浏览器/服务器端 2.资源分类 1.静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析如:html,cs ...

  10. CSS的常用属性(一)

    文本属性 font-size: 16px 文字大小 font-weight: 700 文字粗细 值从100-900 (值为700看上去加粗了) 不推荐使用font-weight: bold font- ...