【国庆弯道超车系列】MongoDB进阶之查询(二)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 【国庆弯道超车系列】MongoDB进阶之查询(二)

通过前面几章的学习,MongoDB的常规操作已经差不多了,今天主要讲解MongoDB查询中的聚合函数及管道应用示例,仅供学习分享使用,如有不足之处,还请指正。

聚合函数

聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。

MongoDB中聚合的方法使用aggregate()。

语法:db.集合名.aggregate(AGGREGATE_OPERATION);

下表展示了一些聚合的表达式:

管道

MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。

表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。

聚合框架中常用的几个操作:

  • $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
  • $match:用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。
  • $limit:用来限制MongoDB聚合管道返回的文档数。
  • $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
  • $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
  • $group:将集合中的文档分组,可用于统计结果。
  • $sort:将输入文档排序后输出。
  • $geoNear:输出接近某一地理位置的有序文档。

聚合语法

聚合表达式语法,如下所示:

db.集合名.aggregate([
    {
        管道:{聚合表达式}
    }
]);

注意:聚合函数套路:从外到里依次是小括号,中括号,大括号。

group,sort示例

示例1 :统计男生女生的平均年龄

示例2:统计男生女生的最大年龄,最小年龄,如下所示:

 

示例3:统计男生女生的人数,如下所示:

注意:$sum:1===count(*)

示例4:不分组求汇总,_id:null 就表示不分组。

示例5:求每一个系的人数,并升序排列,如下所示:

注意:各个管道之间是相互平级的,不能嵌套。

示例6:多个分组条件,查询每一个系的男生,女生的人数,如下所示:

查询集合文档数量

如果只是按照某些条件查询数量,不进行分组,则可以采用count函数。

语法:db.集合名称.count();

查询集合文档数量,如下所示:

match,skip示例

示例1:查询年龄大于等于20,且只显示前两个,如下所示:

注意:管道的执行顺序,是从上到下,如果顺序改变,则执行结果会不同。

示例2:查询2条数据,并跳过一条,如下所示:

示例3:先跳过一条,再查询前两条数据,如下所示:

示例4:统计男生的最大年龄,最小年龄,平均年龄

project示例

释义:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。

示例1:查询文档中两个属性,如下所示:

备注

卜算子·我住长江头

【作者】李之仪 【朝代】宋

我住长江头,君住长江尾。日日思君不见君,共饮长江水。

此水几时休,此恨何时已。只愿君心似我心,定不负相思意。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
2月前
|
NoSQL 定位技术 MongoDB
解锁MongoDB索引的秘密:优化查询效率与应对限制的策略
解锁MongoDB索引的秘密:优化查询效率与应对限制的策略
|
6天前
|
监控 NoSQL MongoDB
mongodb查询100万数据如何查询快速
综上,提高MongoDB百万级数据的查询性能需要综合多项技术,并在实际应用中不断调优和实践。理解数据的特征,合理设计索引,优化查询语句,在数据访问、管理上遵循最佳的实践,这样才能有效地管理和查询大规模的数据集合。
28 1
|
1月前
|
NoSQL 关系型数据库 MySQL
优化MongoDB查询
【7月更文挑战第4天】
31 0
|
1月前
|
NoSQL 中间件 MongoDB
MongoDB查询过程
【7月更文挑战第3天】
24 0
|
2月前
|
NoSQL BI MongoDB
深入理解 MongoDB 条件操作符:优化查询、精准筛选、提升性能
深入理解 MongoDB 条件操作符:优化查询、精准筛选、提升性能
|
2月前
|
NoSQL Shell 网络安全
MongoDB连接指南:从基础到进阶
MongoDB连接指南:从基础到进阶
|
3月前
|
NoSQL MongoDB 数据库
通过优化索引以消除 MongoDB 中的 "查询目标已超过1000个扫描对象/返回的文档数" 警告
MongoDB NoSQL数据库在处理复杂查询时可能出现“查询目标已超过1000个扫描对象/返回的文档数”警告。文章分析了该问题,展示了一个示例集合和相关索引,并提供了查询示例。通过`explain`命令发现查询未有效利用索引。解决方案是遵循ESR规则,创建新索引从而优化查询并消除警告。
99 1
|
2月前
|
监控 NoSQL MongoDB
深度优化:掌握 MongoDB 查询分析的关键技巧
深度优化:掌握 MongoDB 查询分析的关键技巧
|
2月前
|
NoSQL BI MongoDB
MongoDB 数据探索之道:查询文档操作详解
MongoDB 数据探索之道:查询文档操作详解
|
2月前
|
存储 监控 NoSQL
MongoDB 覆盖索引查询:提升性能的完整指南
MongoDB 覆盖索引查询:提升性能的完整指南

热门文章

最新文章