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

$db=$m->getMongoClient();$d=$db->mydb;$c=$d->stu;$depts=$c->distinct('dept');foreach ($depts as $v){echo $v.'<br>';}

include_once 'mDB.class.php';$m=new mDB();$m->setDB('mydb');$db=$m->getMongoClient();$d=$db->mydb;$c=$d->stu;$depts=$c->distinct('dept');foreach ($depts as $v){echo $v;echo '专业人数'.$c->find(['dept'=>$v])->count();echo '<hr>';}

<?phpheader('content-type:text/html;charset=UTF-8');//无密码直接登录mongodb$m = new MongoClient('mongodb://localhost:27017');$db = $m->selectDB('aaa');$c1 = $db->student;//$c1->insert(array("category" => "计算机", "name" => "张在",'age'=>33));//$c1->insert(array("category" => "计算机", "name" => "李四",'age'=>25));//$c1->insert(array("category" => "英语", "name" => "赵六",'age'=>30));//$c1->insert(array("category" => "英语", "name" => "赵七",'age'=>40));//$c1->insert(array("category" => "会计", "name" => "李勇",'age'=>10));//$keys = array("category" => 1);//$initial = array("items" => array());//$reduce = "function (obj, prev) { prev.items.push(obj);}";//$reduce = "function (obj, prev) { prev.items.push(obj.name);}";//$reduce = "function (obj, prev) { prev.items.push(obj.name+obj.age);}";//$g = $c1->group($keys, $initial, $reduce);//echo json_encode($g['retval']);//echo '<pre>';//print_r($g);//统计各专业人数// $keys = array("category" => 1); //指定分类属性// $initial = array("count" => 0);// $reduce = "function (obj, prev) { prev.count++; }";// $condition = array('condition' => array());//条件// $g = $c1->group($keys, $initial, $reduce, $condition);// var_dump($g);//统计年龄大于等于25岁的总人数// $keys=[];// $initial = ['c'=>0];// $reduce = 'function(obj,prev){prev.c++;}';// $where = ['condition'=>['age'=>['$gte'=>25]]];// $g = $c1->group($keys,$initial,$reduce,$where);// var_dump($g);//求出各专业学生年龄之和 select category,sum(age) from student group by category;// $keys=['category'=>1];// $initial = ['sum'=>0];// $reduce = "function(obj,prev){prev['sum'] += obj.age; }";// $g = $c1->group($keys,$initial,$reduce);// var_dump($g);//根据专业,来统计各专业的最大年龄// $keys=['category'=>1];// $initial = ['max'=>0];// $reduce = "function(obj,prev){if(obj.age>prev['max']){prev['max']=obj.age;} }";// $g = $c1->group($keys,$initial,$reduce);// var_dump($g);//根据专业分组,求出每个专业的人数,平均年龄,年龄总各$keys=['category'=>1];$initial = ['sum'=>0,'count'=>0,'avg'=>0];$reduce = "function(obj,prev){prev['sum'] += obj.age;prev['count']++;prev['avg']=prev['sum']/prev['count']}";$g = $c1->group($keys,$initial,$reduce);var_dump($g);$m->close();
include_once 'mDB.class.php';$m=new mDB();$m->setDB('mydb');$db=$m->getMongoClient();$d=$db->mydb;$c=$d->stu;$keys = ["dept" => 1]; //指定分类属性$initial = array("count" => 0);$reduce = "function (obj, prev) { prev.count++; }";$condition = array('condition' => array());//条件$g = $c->group($keys, $initial, $reduce, $condition);echo '<pre>';var_dump($g);

<?phpinclude_once 'mDB.class.php';$m=new mDB();$m->setDB('mydb');$db=$m->getMongoClient();$d=$db->mydb;$c=$d->stu;$keys = ["dept" => 1]; //指定分类属性$initial = array("count" => 0);$reduce = "function (obj, prev) { prev.count++; }";$condition = array('condition' => array());//条件$g = $c->group($keys, $initial, $reduce, $condition);echo '<pre>';var_dump($g);echo '总人数'.$g['count'];echo '<br>总专业'.$g['keys'].'个专业<br>';foreach ($g['retval'] as $v){echo $v['dept'].'人数'.$v['count'].'人';}

<?phpinclude_once 'mDB.class.php';$m=new mDB();$m->setDB('mydb');$db=$m->getMongoClient();$d=$db->mydb;$c=$d->stu;//根据专业分组,求出每个专业的人数,平均年龄,年龄总各$keys=['dept'=>1];$initial = ['sum'=>0,'count'=>0,'avg'=>0,'max'=>0,'min'=>100];$reduce ="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;}}";$g = $c->group($keys,$initial,$reduce);echo '<pre>';var_dump($g);foreach ($g['retval'] as $v){echo $v['dept'].'平均分'.$v['avg'].'最高分'.$v['max'].'最低分'.$v['min'].'各专业总分为'.$v['sum'].'<br>';}

mongodb 分组查询的更多相关文章
- MongoDB分组查询,聚合查询,以及复杂查询
准备数据 from pymongo import MongoClient import datetime client=MongoClient('mongodb://localhost:27017') ...
- Mongodb 分组查询例子
db.tblCard.aggregate([ { $match: { "sNo": { " ...
- MongoDB之 分组查询
分组查询 可视化工具 https://robomongo.org pymongo from pymongo import MongoClient # 方式一: c = MongoClient(host ...
- Mongodb for C# 分组查询
#region 排序获取集合 static List<BsonDocument> GetPagerWithGroup(string connectionString, string dat ...
- mongodb使用mongoose分组查询
一个分组查询的例子: model.aggregate([{$match: ops}, {$unwind: '$details'}, {$sort: {create_at: -1}}, { $group ...
- MongoDB聚合查询
1.count:查询记录条数 db.user.count() 它也跟find一样可以有条件的 db.user.count({}) 2.distinct:用来找出给定键的所有不同的值 db.user.d ...
- Mongodb高级查询【二】
上一篇文章,写了mongodb常规操作,继续写入,本章主要讲高级查询,文本,聚集,大数据查询. Mongodb的查询语法是很多的,是NOSQL队伍中比较丰富的一个.当然有很多查询跟关系型查询无法相比. ...
- 使用c#对MongoDB进行查询(1)
1.BsonDocument对象 在MongoDB.Bson命名空间下存在一个BsonDocument类,它是MongoDB的文档对象,代表着MongoDB中不规则数据一条条实体模型.可以使用Bson ...
- BBS--功能4:个人站点页面设计(ORM跨表与分组查询)
查询: 日期归档查询 1 date_format ============date,time,datetime=========== create table t_mul_new(d date,t t ...
随机推荐
- python海龟图制作
海龟画图很好看,先上图形: 依据代码注释随意打印出来就行: #!/usr/bin/python3.4 # -*- coding: utf-8 -*- import turtle # 拿起一支笔 t = ...
- python使用xlrd模块读写excel
1.行列索引均从0开始2.int数据被读成float数据,解决办法,if type(value) == float and value%1 == 0,value= int(value)模块读 #!/u ...
- ping脚本
#!/bin/bash for x in{100..200} ####区间为192.168.100.100-192.168.100.200 do x=$(($x-100)) if fping -c 1 ...
- java获取图片原始尺寸
java获取图片原始尺寸 URL url = null; InputStream is = null; BufferedImage img = null; try { url = new URL(pi ...
- 解决Excel 2010只有一个窗口的问题
Excel 2010打开多个文件,但只有一个窗口的问题. 一般首次安装没有这个问题,碰到装了WPS后再卸载WPS,还有就是OFFICE卸载后重装,也会发生这个现像. 一.: 删除 HKEY_CLASS ...
- strace命令简单用法
strace可以显示一个程序经历的系统调用,接收到的信号等信息. 用法: 1.strace -ff -o output programName 将程序programName的写入output文件中,- ...
- 集合Collection
/* * 集合的由来: * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. * 而要想存储多个对象,就不能是一个基本 ...
- 菜单栏被flex页面遮挡解决办法
- js声明json数据,打印json数据,遍历json数据
1.js声明json数据: 2.打印json数据: 3.遍历json数据 //声明JSON var json = {}; json.a = 1; //第一种赋值方式(仿对象型) json['b'] = ...
- Android开发资料学习(转载/链接)
http://www.devdiv.com/android_-forum-102-1.html 各种开源控件集合 http://www.cnblogs.com/android-blogs/p/5342 ...