mongo学习笔记(二):聚合,游标
一、聚合
<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学习笔记(二):聚合,游标相关推荐
- Mongodb使用学习笔记(二)
文章目录 Mongodb使用学习笔记(二)之查询篇 1. MongoDB命令学习 (1) MongoDB 查询文档 1.1 全部查询 1.2 单条件查询 1.3 多条件查询 1.3.1 AND拼接多条 ...
- mysql 临时表 事务_MySQL学习笔记十:游标/动态SQL/临时表/事务
逆天十三少 发表于:2020-11-12 08:12 阅读: 90次 这篇教程主要讲解了MySQL学习笔记十:游标/动态SQL/临时表/事务,并附有相关的代码样列,我觉得非常有帮助,现在分享出来大家一 ...
- linux学习笔记二
linux学习笔记二 文章目录 linux学习笔记二 finding finding hyx@hyx-computer:~$ cd mnt -bash: cd: mnt: No such file o ...
- mongo学习笔记四:Mongodb的三种集群(Replica Set)
Replica Set 中文翻译叫做副本集,不过我并不喜欢把英文翻译成中文,总是感觉怪怪的.其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据 ...
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...
- [转载]dorado学习笔记(二)
原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...
- PyTorch学习笔记(二)——回归
PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...
- tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数
tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报 分类: tensorflow(4) 目录(?)[+] 本笔记目的 ...
- Scapy学习笔记二
Scapy学习笔记二 Scapy Sniffer的用法: http://blog.csdn.net/qwertyupoiuytr/article/details/54670489 Scapy Snif ...
- Ethernet/IP 学习笔记二
Ethernet/IP 学习笔记二 原文链接:http://wiki.mbalib.com/wiki/Ethernet/IP 1.通信模式 不同于源/目的通信模式,EtherNet/IP 采用生产/消 ...
最新文章
- 香蕉派 banana pi github 最新Linux 代码升级到kernel 4.2.
- OpenCASCADE:OCCT应用框架OCAF之形状属性
- js判断最后一个字符是不是指定字符_结合简单的 JS 就可以让 CSS 也能做搜索
- 2019-03-18-算法-进化(字符串中的第一个唯一字符)
- Android 路由实践(二)
- 11.乘最多水的容器
- java update 8_版本任你发,我用Java 8!JDK的更新,改变了哪些你写代码的方式?...
- 第三方app_官方打不过第三方APP之 知乎 篇
- sql获取当前月一号
- Mac新手必看教程,苹果电脑基本使用操作,苹果电脑基本操作
- 挖矿病毒入侵服务器(没有解决,重置服务器了)
- 新闻文本分类学习笔记
- AppBarLayoutCoordinatorLayoutBehavior
- Jshop小程序商城
- HTML实现两行两列单元表
- 颜色大全:颜色名称和颜色值。色板、色板对照表1
- 回归预测 | MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神经网络多输入单输出回归预测
- Gohead学习笔记
- 吉大软件专硕971-2010
- 数据洪流来袭,企业转型势不可挡,如何四两拨千斤?
热门文章
- IDEA通过git怎么回滚到某个提交节点或某个版本
- Ubuntu 开机 Firmware Bug , Bios corrupted
- 转list_你知道Java数组转List的三种方式及对比吗?
- 办公:Office快捷键之王,这个键应该没人不服!
- ASP.NET 4.0 取消表单危险字符验证
- linux内核设计与实现 中文第三版 pdf_大牛推荐的5本 Linux 经典必读书
- linux下julia的开发环境,Ubuntu搭建Julia远程开发环境
- java method 注释_Java注解
- Web:你知道我这十几年是怎么过来的吗?!
- 微软宣布开源WPF、WinForms和WinUI