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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ArcGIS遇上Python】ArcGIS Python实现Modis NDVI批量求年最大值

一年中的12个月份的月最大合成&#xff08;mvc&#xff09;数据放在“F:\\Vegetation Change\\Data\\GIMMS Data\\1MVC\\"&#xff0c;数据名称格式为mvc_198801,mvc_198802........mvc_198812。处理年份为1981-2006&#xff0c;代码为&#xff1a; import arcpy arcpy.C…

linux终端常用命令和windows终端常用命令对比

1、打开终端的快捷键 在linux平台 ctrl + Alt + T 在windows平台 菜单键+R 然后cmd 回车 2、过滤的命令linux的grep,windows的findstr 比如我们过滤android日志 在linux平台终端命令如下 adb logcat | grep *** 在windows平台终端命令如下 adb logcat | findstr *** 3、…

字节跳动offer流程多长时间_字节跳动-运营实习生-面经实录(已Offer??)

一、岗位【职位】运营实习生&#xff08;社群、用研&#xff09;【类型】日常实习【地点】上海【JD】-职位描述-参与公司教育类APP的核心用户运营工作&#xff1b;通过社群及内容的形式服务好核心用户群体&#xff0c;提高用户口碑&#xff1b;建立用户反馈体系&#xff0c;评估…

Java实验二猜数字游戏,JAVA-第2周实验-猜数字游戏

JAVA--第2周实验--猜数字游戏/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生* All rights reserved.* 文件名称&#xff1a;猜数字游戏* 作 者&#xff1a; 雷恒鑫* 完成日期&#xff1a; 2012 年 09 月 07 日* 版 本 号&#…

Xamarin效果第十五篇之自定义CheckBox

在上一篇中使用Xamarin玩耍了GIS加载高德和百度;这不这两天又抽空完善了一下;自定义了一下CheckBox;来看看最终效果:关于实现咱就是直接自定义ContentView:后台无非就是一堆的依赖属性(和WPF真像):后台定义的Command为了支持选中状态:‍再来看看具体使用:<CustomViews:Image…

使用ndk standalone工具链来编译某个平台下的库

地址&#xff1a; http://www.kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html It is now possible to use the toolchain provided with the Android NDK as a standalone compiler. This can be useful if you already have your own build system, and only need to abili…

顺义教委携手华平共建视频图像综合管理平台

随着经济的发展和社会的进步&#xff0c;北京顺义区的教育也迈上了新的台阶。据初步统计&#xff0c;目前全区有中小学、幼儿园、中等职业学校115所&#xff0c;大学8所&#xff0c;培训机构86个&#xff0c;在校生近10万人&#xff0c;教职工13000余人。多年教育信息化的推进&…

【Java基础】Java中的持久属性集Properties

Properties 类的介绍 Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。一个属性列表可包含另一个属性列表作为它的“默认值”&#xff1b;如果未能在原有的属性列表中搜索到属性键&#xff0c;则搜索第…

【ArcGIS遇上Python】栅格影像批量除以10000

影像做除法时&#xff0c;要先进行float()运算&#xff0c;在进行Divide运算。以下将指定文件夹下的.tif文件首先转换为float并保存在指定文件&#xff0c;再进行divide运算。 import arcpy,os,glob arcpy.CheckOutExtension("spatial") datafilesglob.glob("F:…

python之sys.argv获取命令行的参数

1、问题 执行python文件&#xff0c;我们怎么获取在终端获取输入参数&#xff0c;我们可以使用sys.argv&#xff0c;特么之前不是不熟悉 2、代码 #!/usr/bin/pythonimport sysif __name__ __main__:first sys.argv[0:]print firstsecond sys.argv[1:]print secondname sy…

java爬虫工具xpath提取,2020-07-16--爬虫数据提取--xpath

xpath全称 XML Path Language 是一门在XML文档中 查找信息的语言 最初是用来搜寻XML文档的 但是它同样适用于HTML文档的搜索XPath 的选择功能十分强大&#xff0c;它提供了非常简洁的路径选择表达式&#xff0c;另外还提供了超过100个内置函数&#xff0c;用于字符串&#xff0…

ant压缩在哪卸载_反病毒软件这么多,到底哪一款适合你

记得大学读书的时候,买了电脑,第一件事情就是卸载windows自带的杀毒软件,然后装上自己心仪的杀毒软件,可是市面上杀毒软件这么多,哪一款适合你呢?我找了市面上排名最靠前的三款杀毒软件,让我们看看他们孰胜孰劣,还是各有千秋.他们分别是腾讯的电脑管家,金山毒霸,360安全卫士.这…

连接局域网的SQL Server数据库配置

首先要保证两台机器位于同一局域网内,然后打开配置工具→SQL Server配置管理器进行配置,将MSSQLSERVER的协议的TCP/IP的(IP1,IP2)TCP端口改为1433,已启用改为是。 服务器名称:输入IP 登录名:输入数据库帐号

.NetCore使用NETCore.MailKit发送邮件

前言平时工作中很少用到需要发邮件的功能&#xff0c;所以邮件这块的功能也没有太过关注。近期有一个项目需要接收用户的反馈&#xff0c;上边决定使用邮件&#xff0c;直接将反馈信息发送给领导&#xff0c;也就有了这篇文章。实现发邮件不难&#xff0c;但是开发中遇到了一个…

Erlang 进程创建性能测试

测试代码来自 Progremming Erlang。Erlang&#xff1a; R13B (erts-5.7.1)&#xff0c; 启动参数 P 5000000系统&#xff1a; Window XPCPU&#xff1a; E8200 2.66G 双核内存&#xff1a; 4GErlang R13B (erts-5.7.1) [smp:2:2] [rq:2] [async-threads:0]Eshell V5.7.1 (abor…

Linux bash shell基础语法

转自&#xff1a;http://blog.sina.com.cn/s/blog_46177c3401014fty.html一、Shell基本类型的变量&#xff1a;&#xff08;1&#xff09;Shell定义的环境变量&#xff1a;Shell在开始执行时就已经定义了一些和系统的工作环境有关的变量&#xff0c;用户还可以重新定义这些变量…

通俗理解T检验与F检验的区别【转】

转自&#xff1a;http://blog.sina.com.cn/s/blog_4ee13c2c01016div.html1&#xff0c;T检验和F检验的由来一般而言&#xff0c;为了确定从样本(sample)统计结果推论至总体时所犯错的概率&#xff0c;我们会利用统计学家所开发的一些统计方法&#xff0c;进行统计检定。 通过把…

shell之通过if [ $? != 0 ]判断上次程序是否执行成功

1、问题 在shell脚本里面有时候我们需要判断上一个程序有没有执行成功&#xff0c;比如用chomd 777 file命令&#xff0c;我们可以用通过if [ $? ! 0 ]判断 $?这里表示上一次运行的结果 2、代码实现 #!/bin/bashtest() {return 2; }testresult$?echo "result is:&q…

哄媳妇

1、如果你的女人在你面前哭了&#xff0c;无论什么原因&#xff0c;请抱紧她&#xff0c;再反抗也要抱紧&#xff0c;趴在桌子上永远没有在你怀里安心&#xff1b; 2、如果你的女人指出了你的不是&#xff0c;请不要总是嫌她唠叨&#xff0c;若不是因为在乎她不会说你&#xff…

自己搭建一个k8s环境

背景Kubernetes 是时下流行的容器编排引擎&#xff0c;因为字母太多&#xff0c;且掐头去尾后剩下 8 个字母&#xff0c;于是被大家亲切的缩写为 k8s。Kubernetes https://kubernetes.io/另外所谓“云原生”概念火爆&#xff0c;各大云厂商也纷纷推出了自己的容器服务&#xff…