• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MongoDB > MongoDB学习笔记之分组(group)使用示例

MongoDB学习笔记之分组(group)使用示例

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了MongoDB学习笔记之分组(group)使用示例等相关知识,希望本文的分享对您有所帮助
// 准备测试数据
db.user.drop();
for(var i=10; i< 100; i++) {
  db.user.insert({
    name:"user" + i, 
    age : Math.floor(Math.random()*10)+ 20, 
    sex : Math.floor(Math.random()*3)%2 ==0 ? 'M' : 'F',
    chinese : Math.floor(Math.random()*50)+50,
    math : Math.floor(Math.random()*50)+50,
    english : Math.floor(Math.random()*50)+50,
    class : "C" + i%5
  })
}

// group函数
// 按照class进行分组,显示每个class中的用户姓名和性别
db.user.group({
  key: {"class": true},
  initial: {"person": []},
  reduce: function(cur, prev) {
    prev.person.push({name: cur.name, sex: cur.sex, age: cur.age});
  }
});

// 对age>25的用户,按照class进行分组,显示每个class中的用户姓名和性别,并统计每组的人数
db.user.group({
  key: {"class": true},
  initial: {"person": []},
  reduce: function(doc, out){
    out.person.push({name: doc.name, sex: doc.sex, age: doc.age});
  },
  finalize: function(out){
    out.count = out.person.length;
  },
  condition: {"age": {$gt: 25}}
})

// 分组计算每个class中,chinese最大值和最小值
db.user.group({
  key: {"class": true},
  initial: {"chinese_min": 0, "chinese_max":0 },
  reduce: function(doc, out){
    out.chinese_min = doc.chinese;
    out.chinese_min = doc.chinese;

    out.chinese_min = Math.min(out.chinese_min, doc.chinese);
    out.chinese_max = Math.max(out.chinese_max, doc.chinese)
  },
})

// 利用分组,计算每个总成绩和成绩平均值
db.user.group({
  key: {"_id" : true},
  initial: {name:"", total: 0, avg: 0},
  reduce: function(doc, out){
    out.name = doc.name;
    out.total = doc.chinese + doc.math + doc.english;
    out.avg = Math.floor(out.total / 3);
  }
})
</div>

group参数选项:

1.key: 这个就是分组的key
2.initial: 每组都分享一个初始化函数,特别注意:是每一组initial函数。
3.reduce: 这个函数的第一个参数是当前的文档对象,第二个参数是上一次function操作的累计对象。有多少个文档, $reduce就会调用多少次。
4.condition: 这个就是过滤条件。
5.finalize: 这是个函数,每一组文档执行完后,多会触发此方法。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-11MongoDB中对文档的增删查改基本操作方法总结
  • 2017-05-11MongoDB 常用命令总结
  • 2017-05-11NoSQL反模式 - 文档数据库篇
  • 2017-05-11MongoDB中的一些坑(最好不要用)
  • 2017-05-11mongodb添加arbiter节点的方法示例
  • 2017-05-11Linux系统下MongoDB的简单安装与基本操作
  • 2017-05-11MongoDB查询性能优化验证及验证
  • 2017-05-11centos7防火墙导致java程序访问mongodb3.0.1时报错的问题分析
  • 2017-05-11MongoDB系列教程(一):NoSQL起源
  • 2017-08-25MongoDB常用操作指令

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • MongoDB快速入门笔记(二)之MongoDB的概念及简单操作
    • Mongodb索引的优化
    • MongoDB系列教程(五):mongo语法和mysql语法对比学习
    • MongoDB中创建索引需要注意的事项
    • mongodb中随机获取1条记录的实现方法
    • Ubuntu中安装MongoDB及执行一些简单操作笔记
    • mongodb常用语句
    • MongoDB的主从复制及副本集的replSet配置教程
    • 记一次MongoDB性能问题(从MySQL迁移到MongoDB)
    • Mongodb 数据类型及Mongoose常用CURD

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有