1、count:查询记录条数

  1. db.user.count()

它也跟find一样可以有条件的

  1. db.user.count({"age":})

2、distinct:用来找出给定键的所有不同的值

  1. db.user.distinct("num")

3、Group:分组查询

key:用来分组文档的字段,我们这里是对年龄分组

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

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

  1. db.user.group({
  2. "key":{"age":true},
  3. "initial":{"person":[]},
  4. "$reduce":function(cur,prev){
  5. prev.person.push(cur.name);
  6. }
  7. })

如果想再过滤掉age小于20的人,group有这么两个可选参数: condition 和 finalize

condition:执行过滤的条件

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

  1. db.user.group({
  2. "key":{"age":true},
  3. "initial":{"person":[]},
  4. "$reduce":function(doc,out){
  5. out.person.push(doc.name);
  6. },
  7. "finalize":function(out){
  8. out.count=out.person.length;
  9. },
  10. "condition":{"age":{$lt:}}
  11. })

4、MapReduce:

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

参数:

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

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

mapReduce函数:这个就是最后执行的函数,参数为map,reduce和一些可选参数。

示例:

map函数,对age大于10的进行处理:

  1. var m=function(){
  2. if(this.age>){
  3. emit(this.age,{name:this.name});
  4. }
  5. }

reduce函数:

  1. var r=function(key,values){
  2. var count=;
  3. values.forEach(function(){count+=;});
  4. return count;
  5. }

执行:

  1. db.user.mapReduce(m,r,{"out":"collection"})

查看输出集合“collecton”的情况

  1. db.collection.find()

从结果集也可以看出,临时结果集中的_id是emit函数中的key。

从图中我们可以看到如下信息:

result: "存放的集合名“。

input:传入文档的个数。

emit:此函数被调用的次数。

reduce:此函数被调用的次数。

output:最后返回文档的个数。

MongoDB聚合查询的更多相关文章

  1. mongodb聚合查询-aggregate

    Mongodb-aggregate 在工作中经常遇到一些mongodb的聚合操作,和mysql对比起来,mongo存储的可以是复杂的类型,比如数组,字典等mysql不善于处理的文档型结构,但是mong ...

  2. MongoDB聚合查询及Python连接MongoDB操作

    今日内容概要 聚合查询 Python操作MongoDB 第三方可视化视图工具 今日内容详细 聚合查询 Python操作MongoDB 数据准备 from pymongo import MongoCli ...

  3. MongoDB 聚合查询报错

    1.Distinct聚合查询报错 db.users.distinct("uname") db.runCommand({"distinct":"user ...

  4. mongodb 聚合查询

    操作符介绍: $project:包含.排除.重命名和显示字段 $match:查询,需要同find()一样的参数 $limit:限制结果数量 $skip:忽略结果的数量 $sort:按照给定的字段排序结 ...

  5. 记一次mongodb聚合查询

    先说一下场景,产品中用到了简单的表单构造器,开始提供了一系列的控件,例如单行文本框.多行文本框.单选.复选.时间等,之后你可以拖拽控件自己组装你想要的表单……网上有很多的表单构造器,这里就不细说了,可 ...

  6. 【Mongodb】聚合查询 && 固定集合

    概述 数据存储是为了可查询,统计.若数据只需存储,不需要查询,这种数据也没有多大价值 本篇介绍Mongodb 聚合查询(Aggregation) 固定集合(Capped Collections) 准备 ...

  7. Mongodb高级查询【二】

    上一篇文章,写了mongodb常规操作,继续写入,本章主要讲高级查询,文本,聚集,大数据查询. Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个.当然有很多查询跟关系型查询无法相比. ...

  8. python操作mongodb之二聚合查询

    #聚合查询 from pymongo import MongoClient db = MongoClient('mongodb://10.0.0.9:27017/').aggregation_exam ...

  9. mongodb高级聚合查询

    在工作中会经常遇到一些mongodb的聚合操作,特此总结下.mongo存储的可以是复杂类型,比如数组.对象等mysql不善于处理的文档型结构,并且聚合的操作也比mysql复杂很多. 注:本文基于 mo ...

随机推荐

  1. Repeatless Numbers[POJ2956]

    Repeatless Numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1719   Accepted: 726 ...

  2. BZOJ3532 : [Sdoi2014]Lis

    f[i]表示以i为结尾的LIS长度 对于所有f[i]=1的,由S向i连边 对于所有f[i]=maxf的,由i向T连边 对于j<i,a[j]<a[i],且f[j]+1=f[i]的,j向i连边 ...

  3. CSS创建三角形(小三角)的几种方法

    你可以在很多地方看到三角形(小三角):tooltips提示框.下拉菜单.甚至在loading载入动画里.不管你喜欢还是不喜欢,这些小元素对各UI元素之间的联系关系式很重要的. 有一些不同的方法来设计并 ...

  4. Android下载文件到SD卡

    HttpURLConnection 上传方式: 尝试理解这两种流的区别: InputStreamReader 的读取方式: //创建一个URL对象 URL url = new URL(urlStrin ...

  5. javascript中字符串常用操作总结、JS字符串操作大全

    字符串的操作在js中非常频繁,也非常重要.以往看完书之后都能记得非常清楚,但稍微隔一段时间不用,便会忘得差不多,记性不好是硬伤啊...今天就对字符串的一些常用操作做个整理,一者加深印象,二者方便今后温 ...

  6. c++ stack 的使用

    (1) stack::empty bool empty ( ) const; 判断是否为空. return Value : true if the container size is 0, false ...

  7. Odoo 二次开发教程【一】 Odoo 的安装

    一,安装的两种方式: 1) deb包安装: 此安装方式适用于简单不需要太多的人工干预,大多数插件都在deb中涵盖了.具体的步骤如下: 1.编辑 /etc/apt/source.list 文件,在末尾添 ...

  8. Delphi 复习代码

    1.取得可文件路径 Path := ExtractFilePath(Application.ExeName); //取得可执行文件路径 TXMLDocument.Create(ExtractFileP ...

  9. IOS 今天学到太多的知识了,赶快记录下来

    TabBarController 修改tabbar的背景颜色和选中时候的颜色: func application(application: UIApplication, didFinishLaunch ...

  10. 利用openSSL 生成RSA公钥和密钥

    安装openssl for Windows. 之后开管理员控制台,打开openSSL 我的是 C:\OpenSSL-Win32\bin\openssl.exe 生成1024位的私钥,不指定的话默认20 ...