今天跟大家分享一下mongodb中比较好玩的知识,主要包括:聚合,游标。

一:聚合
常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce。
<1> count
count是最简单,最容易,也是最常用的聚合工具,它的使用跟我们C#里面的count使用简直一模一样。
<2> distinct
这个操作相信大家也是非常熟悉的,指定了谁,谁就不能重复,直接上图。
<3> group
在mongodb里面做group操作有点小复杂,不过大家对sql server里面的group比较熟悉的话还是一眼
能看的明白的,其实group操作本质上形成了一种“k-v”模型,就像C#中的Dictionary,好,有了这种思维,
我们来看看如何使用group。
下面举的例子就是按照age进行group操作,value为对应age的姓名。下面对这些参数介绍一下:
key: 这个就是分组的key,我们这里是对年龄分组。
initial: 每组都分享一个”初始化函数“,特别注意:是每一组,比如这个的age=20的value的list分享一个
initial函数,age=22同样也分享一个initial函数。
$reduce: 这个函数的第一个参数是当前的文档对象,第二个参数是上一次function操作的累计对象,第一次
为initial中的{”perosn“:[]}。有多少个文档, $reduce就会调用多少次。
看到上面的结果,是不是有点感觉,我们通过age查看到了相应的name人员,不过有时我们可能有如下的要求:
①:想过滤掉age>25一些人员。
②:有时person数组里面的人员太多,我想加上一个count属性标明一下。
针对上面的需求,在group里面还是很好办到的,因为group有这么两个可选参数: condition 和 finalize。
condition: 这个就是过滤条件。
finalize:这是个函数,每一组文档执行完后,多会触发此方法,那么在每组集合里面加上count也就是它的活了。
<4> mapReduce
这玩意算是聚合函数中最复杂的了,不过复杂也好,越复杂就越灵活。
mapReduce其实是一种编程模型,用在分布式计算中,其中有一个“map”函数,一个”reduce“函数。
① map:
这个称为映射函数,里面会调用emit(key,value),集合会按照你指定的key进行映射分组。
② reduce:
这个称为简化函数,会对map分组后的数据进行分组简化,注意:在reduce(key,value)中的key就是
emit中的key,vlaue为emit分组后的emit(value)的集合,这里也就是很多{"count":1}的数组。
③ mapReduce:
这个就是最后执行的函数了,参数为map,reduce和一些可选参数。具体看图可知:
从图中我们可以看到如下信息:
result: "存放的集合名“;
input:传入文档的个数。
emit:此函数被调用的次数。
reduce:此函数被调用的次数。
output:最后返回文档的个数。
最后我们看一下“collecton”集合里面按姓名分组的情况。
二:游标
mongodb里面的游标有点类似我们说的C#里面延迟执行,比如:
var list=db.person.find();
针对这样的操作,list其实并没有获取到person中的文档,而是申明一个“查询结构”,等我们需要的时候通过
for或者next()一次性加载过来,然后让游标逐行读取,当我们枚举完了之后,游标销毁,之后我们在通过list获取时,
发现没有数据返回了。
当然我们的“查询构造”还可以搞的复杂点,比如分页,排序都可以加进去。
var single=db.person.find().sort({"name",1}).skip(2).limit(2);
那么这样的“查询构造”可以在我们需要执行的时候执行,大大提高了不必要的花销。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# mongodb
# 聚合
# java操作elasticsearch的案例解析
# 利用Java多线程技术导入数据到Elasticsearch的方法步骤
# JAVA使用ElasticSearch查询in和not in的实现方式
# java 使用ElasticSearch完成百万级数据查询附近的人功能
# 使用java操作elasticsearch的具体方法
# 基于Lucene的Java搜索服务器Elasticsearch安装使用教程
# JAVA mongodb 聚合几种查询方式详解
# mongoDB中聚合函数java处理示例详解
# java使用elasticsearch分组进行聚合查询过程解析
# 文档
# 可选
# 每组
# 我想
# 就会
# 很好
# 是一种
# 太多
# 就像
# 还可以
# 第一个
# 形成了
# 第二个
# 会对
# 可以看到
# 来看看
# 分页
# 想过
# 能看
# 当我们
相关文章:
建站与域名管理如何高效结合?
如何通过多用户协作模板快速搭建高效企业网站?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
平台云上自助建站如何快速打造专业网站?
建站主机服务器选型指南与性能优化方案解析
青岛网站建设如何选择本地服务器?
如何选择适合PHP云建站的开源框架?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
建站之星如何保障用户数据免受黑客入侵?
广东企业建站网站优化与SEO营销核心策略指南
济南网站建设制作公司,室内设计网站一般都有哪些功能?
香港网站服务器数量如何影响SEO优化效果?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
如何快速搭建高效可靠的建站解决方案?
小程序网站制作需要准备什么资料,如何制作小程序?
,柠檬视频怎样兑换vip?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
Swift中switch语句区间和元组模式匹配
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
如何用5美元大硬盘VPS安全高效搭建个人网站?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
如何在建站宝盒中设置产品搜索功能?
已有域名和空间如何快速搭建网站?
如何选择高性价比服务器搭建个人网站?
建站主机核心功能解析:服务器选择与网站搭建流程指南
宝塔建站教程:一键部署配置流程与SEO优化实战指南
大连网站制作公司哪家好一点,大连买房网站哪个好?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
西安大型网站制作公司,西安招聘网站最好的是哪个?
如何在腾讯云服务器快速搭建个人网站?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站org新手必看:2024最新搭建流程与模板选择技巧
贸易公司网站制作流程,出口贸易网站设计怎么做?
如何在腾讯云免费申请建站?
清除minerd进程的简单方法
岳西云建站教程与模板下载_一站式快速建站系统操作指南
家具网站制作软件,家具厂怎么跑业务?
如何通过FTP服务器快速搭建网站?
在线制作视频网站免费,都有哪些好的动漫网站?
如何在七牛云存储上搭建网站并设置自定义域名?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
黑客如何利用漏洞与弱口令入侵网站服务器?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
制作门户网站的参考文献在哪,小说网站怎么建立?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
*请认真填写需求信息,我们会在24小时内与您取得联系。