zoukankan      html  css  js  c++  java
  • MongoDB进阶之查询(二)

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

    聚合函数

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

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

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

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

    管道

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

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

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

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

    聚合语法

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

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

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

    group,sort示例

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

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

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

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

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

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

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

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

     查询集合文档数量

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

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

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

    1 //查询总文档数量
    2 db.student.count();
    3 //查询男生数量
    4 db.student.count({sex:"Male"});

    match,skip示例

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

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

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

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

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

    project示例

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

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

     备注

    卜算子·我住长江头

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

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

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


    作者:Alan.hsiang
    出处:http://www.cnblogs.com/hsiang/
    本文版权归作者和博客园共有,写文不易,支持原创,欢迎转载【点赞】,转载请保留此段声明,且在文章页面明显位置给出原文连接,谢谢。
    关注个人公众号,定时同步更新技术及职场文章

  • 相关阅读:
    HTML的基本骨架
    2017.7.27
    2017.7.26
    2017.7.25
    2017.7.24
    2017.7.22
    2017.7.21
    Javascript Step by Step
    Javascript Step by Step
    Javascript Step by Step
  • 原文地址:https://www.cnblogs.com/hsiang/p/15369982.html
Copyright © 2011-2022 走看看