数据的保存

  1. include_once 'mDB.class.php';
  2. $m=new mDB();
  3. $m->setDB('mydb');
  4. // $m->save('stu',['dept'=>'财务','name'=>'张三','age'=>73]);
  5. // $m->save('stu',['dept'=>'计算机','name'=>'张四','age'=>53]);
  6. // $m->save('stu',['dept'=>'计算机','name'=>'张五','age'=>23]);
  7. // $m->save('stu',['dept'=>'财务','name'=>'张六','age'=>93]);
  8. // $m->save('stu',['dept'=>'计算机','name'=>'张七','age'=>83]);
  9. // $m->save('stu',['dept'=>'法学','name'=>'张八','age'=>53]);
查询出所有的专业
  1. $db=$m->getMongoClient();
  2. $d=$db->mydb;
  3. $c=$d->stu;
  4. // echo $c->find(['dept'=>'计算机'])->count();//返回计算机专业有几人
  5. $currsor=$c->find([],['_id'=>0,'dept'=>1]);
  6. foreach ($currsor as $v){
  7. echo $v['dept'].'<br>';
  8. }

消除重复取出各个专业的名字distinct
  1. $db=$m->getMongoClient();
  2. $d=$db->mydb;
  3. $c=$d->stu;
  4. $depts=$c->distinct('dept');
  5. foreach ($depts as $v){
  6. echo $v.'<br>';
  7. }

统计各个专业的人数
  1. include_once 'mDB.class.php';
  2. $m=new mDB();
  3. $m->setDB('mydb');
  4. $db=$m->getMongoClient();
  5. $d=$db->mydb;
  6. $c=$d->stu;
  7. $depts=$c->distinct('dept');
  8. foreach ($depts as $v){
  9. echo $v;
  10. echo '专业人数'.$c->find(['dept'=>$v])->count();
  11. echo '<hr>';
  12. }

分组查询的所有代码
  1. <?php
  2. header('content-type:text/html;charset=UTF-8');
  3. //无密码直接登录mongodb
  4. $m = new MongoClient('mongodb://localhost:27017');
  5. $db = $m->selectDB('aaa');
  6. $c1 = $db->student;
  7. //$c1->insert(array("category" => "计算机", "name" => "张在",'age'=>33));
  8. //$c1->insert(array("category" => "计算机", "name" => "李四",'age'=>25));
  9. //$c1->insert(array("category" => "英语", "name" => "赵六",'age'=>30));
  10. //$c1->insert(array("category" => "英语", "name" => "赵七",'age'=>40));
  11. //$c1->insert(array("category" => "会计", "name" => "李勇",'age'=>10));
  12. //$keys = array("category" => 1);
  13. //$initial = array("items" => array());
  14. //$reduce = "function (obj, prev) { prev.items.push(obj);}";
  15. //$reduce = "function (obj, prev) { prev.items.push(obj.name);}";
  16. //$reduce = "function (obj, prev) { prev.items.push(obj.name+obj.age);}";
  17. //$g = $c1->group($keys, $initial, $reduce);
  18. //echo json_encode($g['retval']);
  19. //echo '<pre>';
  20. //print_r($g);
  21. //统计各专业人数
  22. // $keys = array("category" => 1); //指定分类属性
  23. // $initial = array("count" => 0);
  24. // $reduce = "function (obj, prev) { prev.count++; }";
  25. // $condition = array('condition' => array());//条件
  26. // $g = $c1->group($keys, $initial, $reduce, $condition);
  27. // var_dump($g);
  28. //统计年龄大于等于25岁的总人数
  29. // $keys=[];
  30. // $initial = ['c'=>0];
  31. // $reduce = 'function(obj,prev){prev.c++;}';
  32. // $where = ['condition'=>['age'=>['$gte'=>25]]];
  33. // $g = $c1->group($keys,$initial,$reduce,$where);
  34. // var_dump($g);
  35. //求出各专业学生年龄之和 select category,sum(age) from student group by category;
  36. // $keys=['category'=>1];
  37. // $initial = ['sum'=>0];
  38. // $reduce = "function(obj,prev){prev['sum'] += obj.age; }";
  39. // $g = $c1->group($keys,$initial,$reduce);
  40. // var_dump($g);
  41. //根据专业,来统计各专业的最大年龄
  42. // $keys=['category'=>1];
  43. // $initial = ['max'=>0];
  44. // $reduce = "function(obj,prev){if(obj.age>prev['max']){prev['max']=obj.age;} }";
  45. // $g = $c1->group($keys,$initial,$reduce);
  46. // var_dump($g);
  47. //根据专业分组,求出每个专业的人数,平均年龄,年龄总各
  48. $keys=['category'=>1];
  49. $initial = ['sum'=>0,'count'=>0,'avg'=>0];
  50. $reduce = "function(obj,prev){prev['sum'] += obj.age;prev['count']++;prev['avg']=prev['sum']/prev['count']}";
  51. $g = $c1->group($keys,$initial,$reduce);
  52. var_dump($g);
  53. $m->close();
查询出所有的信息
  1. include_once 'mDB.class.php';
  2. $m=new mDB();
  3. $m->setDB('mydb');
  4. $db=$m->getMongoClient();
  5. $d=$db->mydb;
  6. $c=$d->stu;
  7. $keys = ["dept" => 1]; //指定分类属性
  8. $initial = array("count" => 0);
  9. $reduce = "function (obj, prev) { prev.count++; }";
  10. $condition = array('condition' => array());//条件
  11. $g = $c->group($keys, $initial, $reduce, $condition);
  12. echo '<pre>';
  13. var_dump($g);

统计出所有的信息
$reduce = "function (obj, prev) { prev.count++; }";此句为程序里面的死命令
  1. <?php
  2. include_once 'mDB.class.php';
  3. $m=new mDB();
  4. $m->setDB('mydb');
  5. $db=$m->getMongoClient();
  6. $d=$db->mydb;
  7. $c=$d->stu;
  8. $keys = ["dept" => 1]; //指定分类属性
  9. $initial = array("count" => 0);
  10. $reduce = "function (obj, prev) { prev.count++; }";
  11. $condition = array('condition' => array());//条件
  12. $g = $c->group($keys, $initial, $reduce, $condition);
  13. echo '<pre>';
  14. var_dump($g);
  15. echo '总人数'.$g['count'];
  16. echo '<br>总专业'.$g['keys'].'个专业<br>';
  17. foreach ($g['retval'] as $v){
  18. echo $v['dept'].'人数'.$v['count'].'人';
  19. }

"function(obj,prev){
    prev['sum'] += obj.age;
    prev['count']++;
    prev['avg']=prev['sum']/prev['count'];
   if(obj.age>prev['max']){prev['max']=obj.age;}
    if(obj.age<prev['min']){prev['min']=obj.age;}
}";  
求出平均分,最高分,最低分,各专业的总分
  1. <?php
  2. include_once 'mDB.class.php';
  3. $m=new mDB();
  4. $m->setDB('mydb');
  5. $db=$m->getMongoClient();
  6. $d=$db->mydb;
  7. $c=$d->stu;
  8. //根据专业分组,求出每个专业的人数,平均年龄,年龄总各
  9. $keys=['dept'=>1];
  10. $initial = ['sum'=>0,'count'=>0,'avg'=>0,'max'=>0,'min'=>100];
  11. $reduce ="function(obj,prev){
  12. prev['sum'] += obj.age;
  13. prev['count']++;
  14. prev['avg']=prev['sum']/prev['count'];
  15. if(obj.age>prev['max']){prev['max']=obj.age;}
  16. if(obj.age<prev['min']){prev['min']=obj.age;}
  17. }";
  18. $g = $c->group($keys,$initial,$reduce);
  19. echo '<pre>';
  20. var_dump($g);
  21. foreach ($g['retval'] as $v){
  22. echo $v['dept'].'平均分'.$v['avg'].'最高分'.$v['max'].'最低分'.$v['min'].'各专业总分为'.$v['sum'].'<br>';
  23. }

mongodb 分组查询的更多相关文章

  1. MongoDB分组查询,聚合查询,以及复杂查询

    准备数据 from pymongo import MongoClient import datetime client=MongoClient('mongodb://localhost:27017') ...

  2. Mongodb 分组查询例子

    db.tblCard.aggregate([     {         $match: {             "sNo": {                 " ...

  3. MongoDB之 分组查询

    分组查询 可视化工具 https://robomongo.org pymongo from pymongo import MongoClient # 方式一: c = MongoClient(host ...

  4. Mongodb for C# 分组查询

    #region 排序获取集合 static List<BsonDocument> GetPagerWithGroup(string connectionString, string dat ...

  5. mongodb使用mongoose分组查询

    一个分组查询的例子: model.aggregate([{$match: ops}, {$unwind: '$details'}, {$sort: {create_at: -1}}, { $group ...

  6. MongoDB聚合查询

    1.count:查询记录条数 db.user.count() 它也跟find一样可以有条件的 db.user.count({}) 2.distinct:用来找出给定键的所有不同的值 db.user.d ...

  7. Mongodb高级查询【二】

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

  8. 使用c#对MongoDB进行查询(1)

    1.BsonDocument对象 在MongoDB.Bson命名空间下存在一个BsonDocument类,它是MongoDB的文档对象,代表着MongoDB中不规则数据一条条实体模型.可以使用Bson ...

  9. BBS--功能4:个人站点页面设计(ORM跨表与分组查询)

    查询: 日期归档查询 1 date_format ============date,time,datetime=========== create table t_mul_new(d date,t t ...

随机推荐

  1. MySQL Innodb数据库性能实践——热点数据性能

    摘要: 对于大部分的应用来说,都存在热点数据的访问,即:某些数据在一定时间内的访问频率要远远高于其它数据. 常见的热点数据有“最新的新闻”.“最热门的新闻”.“下载量最大”的电影等. 为了了解MySQ ...

  2. 【转】JSch - Java实现的SFTP(文件下载详解篇)

    上一篇讲述了使用JSch实现文件上传的功能,这一篇主要讲述一下JSch实现文件下载的功能.并介绍一些SFTP的辅助方法,如cd,ls等.   同样,JSch的文件下载也支持三种传输模式:OVERWRI ...

  3. SPOJ bsubstr

    题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...

  4. SOAOffice和iWebOffice、NTKO的比较及其优势(转)

    http://www.cnblogs.com/liping13599168/articles/1681465.html SOAOffice和iWebOffice.NTKO的比较及其优势 近年来,市场上 ...

  5. VMware10.06精简版安装后台运行

    VMware10.06精简版安装时会出现一个安装功能选择菜单,里面有一条后台运行必选功能,一般人会跳过条.当你打算在服务器上用vmware时,一定要安装后台运行服务,否则你无法换出正在运行的后台虚拟机 ...

  6. 黄聪:远程序桌面登录的.NET(C#)开发

    MSTSCLib.dll和MsTscAxWrapper.dll下载:LibDll.rar 远程序桌面登录的.NET开发,可以使用MSTSCLib.dll和MsTscAxWrapper.dll两个转换过 ...

  7. 生成均值文件mean.binaryproto

    [感谢:http://www.cnblogs.com/denny402/p/5102328.html] compute_image_mean.bin生成均值文件mean.binaryproto: ca ...

  8. 利用SQL 建立和删除 LINKED SERVER

    USE IS21_xxx; if object_id('tempdb..#tmp') is not null drop table #tmp create table #tmp ( cntr ), i ...

  9. Knock: 使用压电传感器来检测敲击

    原文链接:https://www.arduino.cc/en/Tutorial/Knock 敲击检测 本教程介绍如何使用压电传感器检测振动,比如敲门.桌子或其他固体表面. 压电传感器是一种能够在振动. ...

  10. mac 设置 git 和github 告别命令行

    针对和我一样的新手,大虾们请轻拍. 很多小伙伴都想用git管理自己的代码,或者想在github上上传自己的项目.在网上找了几篇这方面的文章,都是用命令行设置的. 用命令行管理和安装太坑爹,这里有一个简 ...