• 技术文章 >数据库 >MongoDB

    mongodb如何在查询时使用聚合?

    yangyang2020-05-23 14:58:54原创2863

    MongoDB除了基本的查询功能之外,还提供了强大的聚合功能。

    我们可以使用count, distinct, group, mapreduce, aggregate等方法实现聚合查询。

    count

    查询记录条数。
    命令:

    db.collectionName.count()

    distinct

    用来找出给定键的所有不同的值
    命令:

    db.collectionName(key)

    group

    分组查询。
    参数说明:

    key:用来分组文档的字段。

    initial: 每组都分享一个”初始化函数“

    $reduce: 执行的reduce函数,第一个参数是当前的文档对象,第二个参数是上一次function操作的累计对象,有多少个文档, $reduce就会调用多少次。

    condition:(可选)执行过滤的条件

    finalize:(可选)在reduce执行完成,结果集返回之前对结果集最终执行的函数。

    MapReduce

    命令:

    db.runCommand(
     { mapreduce : 字符串,集合名,
       map : 函数,见下文
       reduce : 函数,见下文   [, query : 文档,发往map函数前先给过渡文档]
       [, sort : 文档,发往map函数前先给文档排序]
       [, limit : 整数,发往map函数的文档数量上限]
       [, out : 字符串,统计结果保存的集合]
       [, keeptemp: 布尔值,链接关闭时临时结果集合是否保存]
       [, finalize : 函数,将reduce的结果送给这个函数,做最后的处理]
       [, scope : 文档,js代码中要用到的变量]
       [, jsMode : 布尔值,是否减少执行过程中BSON和JS的转换,默认true] //注:false时 BSON-->JS-->map-->BSON-->JS-->reduce-->BSON,可处理非常大的mapreduce,<br>                                    //true时BSON-->js-->map-->reduce-->BSON
       [, verbose : 布尔值,是否产生更加详细的服务器日志,默认true]
     });

    MongoDB中的MapReduce相当于关系数据库中的group by。

    参数:

    map函数:这个称为映射函数,里面会调用emit(key,value),集合会按照你指定的key进行映射分组。

    reduce函数:这个称为简化函数,会对map分组后的数据进行分组简化,注意:在reduce(key,value)中的key就是emit中的key,vlaue为emit分组后的emit(value)的集合。

    更多mongodb相关文章请关注python自学网

    专题推荐:mongodb
    上一篇:mongodb权限有哪些? 下一篇:mongodb是什么语言编写的?

    相关文章推荐

    • mongodb查询以什么开头的?• mongodb副本集如何读写分离?• mongodb慢查询是什么?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网