【国庆弯道超车系列】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:查询文档中两个属性,如下所示:

备注

卜算子·我住长江头

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

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

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

相关文章
|
6月前
|
NoSQL 测试技术 MongoDB
微服务——MongoDB实战演练——根据上级ID查询文章评论的分页列表
本节介绍如何根据上级ID查询文章评论的分页列表,主要包括以下内容:(1)在CommentRepository中新增`findByParentid`方法,用于按父ID查询子评论分页列表;(2)在CommentService中新增`findCommentListPageByParentid`方法,封装分页逻辑;(3)提供JUnit测试用例,验证功能正确性;(4)使用Compass插入测试数据并执行测试,展示查询结果。通过这些步骤,实现对评论的高效分页查询。
89 0
|
11月前
|
存储 NoSQL MongoDB
掌握MongoDB索引优化策略:提升查询效率的关键
在数据库性能调优中,索引是提升查询效率的利器。本文将带你深入了解MongoDB索引的内部工作原理,探讨索引对查询性能的影响,并通过实际案例指导如何针对不同的查询模式建立有效的索引。不仅将涵盖单一字段索引,还会探讨复合索引的使用,以及如何通过分析查询模式和执行计划来优化索引,最终实现查询性能的最大化。
|
8月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过MongoDB Atlas Data Lake或Apache Drill,可以在Java中使用SQL语法查询MongoDB数据。这两种方法都需要适当的配置和依赖库的支持。希望本文提供的示例和说明能够帮助开发者实现这一目标。
256 17
|
9月前
|
SQL NoSQL Java
Java使用sql查询mongodb
通过使用 MongoDB Connector for BI 和 JDBC,开发者可以在 Java 中使用 SQL 语法查询 MongoDB 数据库。这种方法对于熟悉 SQL 的团队非常有帮助,能够快速实现对 MongoDB 数据的操作。同时,也需要注意到这种方法的性能和功能限制,根据具体应用场景进行选择和优化。
351 9
|
11月前
|
存储 NoSQL MongoDB
MongoDB 查询分析
10月更文挑战第21天
83 1
|
11月前
|
NoSQL MongoDB 索引
MongoDB 覆盖索引查询
10月更文挑战第21天
106 1
|
11月前
|
SQL NoSQL MongoDB
MongoDB 查询文档
10月更文挑战第15天
303 1
|
11月前
|
人工智能 NoSQL 机器人
MongoDB Atlas与YoMio.AI近乎完美适配:推理更快速、查询更灵活、场景更丰富
随着MongoDB的新发布和革新,YoMio.AI的“闪电式发展”值得期待。
|
12月前
|
SQL NoSQL JavaScript
04 MongoDB各种查询操作 以及聚合操作总结
文章全面总结了MongoDB中的查询操作及聚合操作,包括基本查询、条件筛选、排序以及聚合管道的使用方法和实例。
2207 0
|
C# 微服务 Windows
模块化革命:揭秘WPF与微服务架构的完美融合——从单一职责原则到事件聚合器模式,构建高度解耦与可扩展的应用程序
【8月更文挑战第31天】本文探讨了如何在Windows Presentation Foundation(WPF)应用中借鉴微服务架构思想,实现模块化设计。通过将WPF应用分解为独立的功能模块,并利用事件聚合器实现模块间解耦通信,可以有效提升开发效率和系统可维护性。文中还提供了具体示例代码,展示了如何使用事件聚合器进行模块间通信,以及如何利用依赖注入进一步提高模块解耦程度。此方法不仅有助于简化复杂度,还能使应用更加灵活易扩展。
281 0

推荐镜像

更多