zoukankan      html  css  js  c++  java
  • MongoDB学习总结(三) —— 常用聚合函数

      上一篇介绍了MongoDB增删改查命令的基本用法,这一篇来学习一下MongoDB的一些基本聚合函数。

      下面我们直奔主题,用简单的实例依次介绍一下。

    > count() 函数

      集合的count函数是最简单的聚合函数,返回集合中文档的数量。

     

    >  distinct() 函数

      用于找出一个集合中,给定键的所有不同的值。

       

      我们还可通过在数据库上运行命令,来执行distinct聚合函数,此时我们必须指定集合和键:

     

      命令参数中,键"distinct"指定统计的集合名称,键"key"指定统计的键的名称!返回一个文档,键“value”指定统计的键在该集合中的所有值!我们还可以看出,在统计时还使用了索引。

     

    > group() 函数

      group聚合可以实现稍微复杂一些的操作,其执行过程为:先按照指定的键对集合中的文档进行分组,然后通过聚合每一组中的所有文档,来产生最终的结果文档。

     

     下面对student集合中的age进行group,然后对每一组文档进行处理,找出对应的name。

     

      Key: 指定要进行分组所使用的键名。

      Initial: 设置初始化值,针对分组后的每一组。

      $reduce:函数,第一个参数是当前的文档对象,第二个参数是文档循环的累加。根据所需的条件对每个分组进行聚合操作,每一组会有一个独立的累加器文档,记录聚合结果。

     

      我们还可通过在数据库上运行命令

     

      "ns":  指定集合名。

     

      以上是对集合所有记录进行分组操作,当然还可以根据某些条件来进行分组。下面我们对namejack,lucy,james的进行分组。

     

      这里我们看到通过condition条件过滤,只对名字是jack,lucy,james的文档进行分组,condition这里可以使用缩写cond或者q。

      另外我们看到还有一个参数finalize,这个参数目的是对$reduce聚合后的结果再次进行处理,最终得到所需的结果。

     

    > MapReduce 函数

      MapReduce是聚合里最复杂的,也是最灵活的,count,distince,group能做到的,它都能做到。

      map:映射函数,将操作映射到集合中的每一个文档,集合会按照你指定的key进行映射分组。使用函数emit(key,value)

      reduce:化简函数,会对map分组后的数据进行分组简化,直到每个键的列表只有一个值为止,返回结果集。 

      mapReduce: 最后执行函数,参数为map,reduce。

     

      概念不好理解,看下实例就很明白了。

     

      从这个实例可以看出,map使用 使用函数emit(key,value),根据name键进行映射分组,每个键对应数组{count:1}的键值。

      然后reduce函数根据每个键所对应的键值进行相应操作。最终得到所需的结果集。

      最后mapReduce函数输出这个结果集。

     

      下面我们看看这个结果集的值。

     

     

     

      常用的聚合函数使用就介绍到这里,下一篇学习一下索引的一些基本用法。     

     

  • 相关阅读:
    Red Hat Enterprise Linux 4 下安装 Oracle 10g [转]
    C# 轻松实现对窗体(Form)换肤[转]
    广州.NET俱乐部第一次活动安排暨动员书
    庆祝广州.net俱乐部成立暨迎接新成员暨讨论社区活动
    有感于广州.NET俱乐部的成立暨全体动员书
    如何在列表模板中增加一个计算列
    BI有感续
    BI有感
    列表属性查看器WebPart
    广州.NET第一次活动内容及演讲安排(本贴持续更新中)
  • 原文地址:https://www.cnblogs.com/mejoy/p/6008233.html
Copyright © 2011-2022 走看看