一、聚合

<1> Count

1.db.person.count()


2.db.person.count({"age":20})

<2> Distinct

db.person.distinct("age")//指定了谁,谁就不能重复

<3> Group

key:这个就是分组的key,我们这里是对年龄分组。
initial: 每组都分享一个”初始化函数“,特别注意:是每一组,比如这个的age=20的value的list分享一个
initial函数,age=22同样也分享一个initial函数。
$reduce: 这个函数的第一个参数是当前的文档对象,第二个参数是上一次function操作的累计对象,第一次为initial中的{”perosn“:[]}。有多少个文档, $reduce就会调用多少次。

按照age进行group操作,value为对应age的姓名。

db.person.group({
"key":{"age":true},
"initial":{"person":[]},
"$reduce":function(doc,out){
out.person.push(doc.name);
}
})

condition: 这个就是过滤条件。
finalize:这是个函数,每一组文档执行完后,多会触发此方法,那么在每组集合里面加上count也就是它的活了。
db.person.group({
"key":{"age":true},
"initial":{"person":[]},
"$reduce":function(doc,out){
out.person.push(doc.name);
},
"finalize":function(out){
out.count=out.person.length;
},
"condition":{"age":{$lt:25}}
})

<4> MapReduce

map:这个称为映射函数,里面会调用emit(key,value),集合会按照你指定的key进行映射分组。
reduce:这个称为简化函数,会对map分组后的数据进行分组简化,注意:在reduce(key,value)中的key就是emit中的key,vlaue为emit分组后的emit(value)的集合,这里也就是很多{"count":1}的数组。
mapReduce:这个就是最后执行的函数了,参数为map,reduce和一些可选参数。
var map = function(){
emit(this.age,{count:1});
}
var reduce = function(key,value){
var result = {count:0};
for(var i=0;i<value.length;i++){
result.count += value[i].count;
}
return result;
}
db.person.mapReduce(map,reduce,{"out":"collection"})

result: "存放的集合名“;

input:传入文档的个数。

emit:此函数被调用的次数。

reduce:此函数被调用的次数。

output:最后返回文档的个数。

db.collection.find()

二、游标

游标有点类似延迟执行,list其实并没有获取到person中的文档,而是申明一个“查询结构”,等我们需要的时候通过for或者next()一次性加载过来,然后让游标逐行读取,当我们枚举完了之后,游标销毁,之后我们在通过list获取时,发现没有数据返回了。
var list = db.person.find();
list.forEach(function(x){
print(x.name);
})
list

转载于:https://www.cnblogs.com/margin-gu/p/5015199.html

mongo学习笔记(二):聚合,游标相关推荐

  1. Mongodb使用学习笔记(二)

    文章目录 Mongodb使用学习笔记(二)之查询篇 1. MongoDB命令学习 (1) MongoDB 查询文档 1.1 全部查询 1.2 单条件查询 1.3 多条件查询 1.3.1 AND拼接多条 ...

  2. mysql 临时表 事务_MySQL学习笔记十:游标/动态SQL/临时表/事务

    逆天十三少 发表于:2020-11-12 08:12 阅读: 90次 这篇教程主要讲解了MySQL学习笔记十:游标/动态SQL/临时表/事务,并附有相关的代码样列,我觉得非常有帮助,现在分享出来大家一 ...

  3. linux学习笔记二

    linux学习笔记二 文章目录 linux学习笔记二 finding finding hyx@hyx-computer:~$ cd mnt -bash: cd: mnt: No such file o ...

  4. mongo学习笔记四:Mongodb的三种集群(Replica Set)

    Replica Set    中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的.其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据 ...

  5. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  6. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  7. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  8. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  9. Scapy学习笔记二

    Scapy学习笔记二 Scapy Sniffer的用法: http://blog.csdn.net/qwertyupoiuytr/article/details/54670489 Scapy Snif ...

  10. Ethernet/IP 学习笔记二

    Ethernet/IP 学习笔记二 原文链接:http://wiki.mbalib.com/wiki/Ethernet/IP 1.通信模式 不同于源/目的通信模式,EtherNet/IP 采用生产/消 ...

最新文章

  1. 香蕉派 banana pi github 最新Linux 代码升级到kernel 4.2.
  2. OpenCASCADE:OCCT应用框架OCAF之形状属性
  3. js判断最后一个字符是不是指定字符_结合简单的 JS 就可以让 CSS 也能做搜索
  4. 2019-03-18-算法-进化(字符串中的第一个唯一字符)
  5. Android 路由实践(二)
  6. 11.乘最多水的容器
  7. java update 8_版本任你发,我用Java 8!JDK的更新,改变了哪些你写代码的方式?...
  8. 第三方app_官方打不过第三方APP之 知乎 篇
  9. sql获取当前月一号
  10. Mac新手必看教程,苹果电脑基本使用操作,苹果电脑基本操作
  11. 挖矿病毒入侵服务器(没有解决,重置服务器了)
  12. 新闻文本分类学习笔记
  13. AppBarLayoutCoordinatorLayoutBehavior
  14. Jshop小程序商城
  15. HTML实现两行两列单元表
  16. 颜色大全:颜色名称和颜色值。色板、色板对照表1
  17. 回归预测 | MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神经网络多输入单输出回归预测
  18. Gohead学习笔记
  19. 吉大软件专硕971-2010
  20. 数据洪流来袭,企业转型势不可挡,如何四两拨千斤?

热门文章

  1. IDEA通过git怎么回滚到某个提交节点或某个版本
  2. Ubuntu 开机 Firmware Bug , Bios corrupted
  3. 转list_你知道Java数组转List的三种方式及对比吗?
  4. 办公:Office快捷键之王,这个键应该没人不服!
  5. ASP.NET 4.0 取消表单危险字符验证
  6. linux内核设计与实现 中文第三版 pdf_大牛推荐的5本 Linux 经典必读书
  7. linux下julia的开发环境,Ubuntu搭建Julia远程开发环境
  8. java method 注释_Java注解
  9. Web:你知道我这十几年是怎么过来的吗?!
  10. 微软宣布开源WPF、WinForms和WinUI