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 ...
随机推荐
- IDEA Generating project in Batch mode
Idea 设置 -DarchetypeCatalog=internal 然后再执行 : Archetype repository not defined. Using the one from [or ...
- cellmap for iphone
说明:Cellmap的Iphone版本已经上架APP Store. 如需下载,可以登陆app store,然后搜索cellmap进行下载. 或者直接登陆以下地址下载: https://itunes.a ...
- 在Linux操作系统下备份恢复技术的应用 转自https://yq.aliyun.com/articles/50205?spm=5176.100239.blogcont24250.9.CfBYE9
摘要: 安全防护:在Linux操作系统下备份恢复技术的应用 原文参见:http://linux.chinaunix.net/techdoc/system/2005/12/19/925898.shtm ...
- 获取tp-link中的拨号密码
一日,公司网络巨慢,丢包非常严重,打电话给电信,说信号稳定,可能是我们的路由器有问题,让我们直接用电脑拨号 心中一闷,鬼知道拨号密码是多少,于是百度了一下,大概有以下几种方法 一.使用工具,把路由器的 ...
- lnmp平台菜鸟入门级笔记
LNMP平台搭建 Mysql安装 MySQL安装 回复收藏 分享 1 下载MySQL数据库l到/usr/local/src/[root@xin tmp]# cd ...
- 中转Http请求
应用场景:公司与外部公司数据对接,外部公司需申请指定IP访问.而本地ip经常变动,无法因ip变动时刻向外部公司申请绑定IP,给本地程序调试带来麻烦,故只能在指定ip服务器上搭建请求中转http请求: ...
- css 文本显示点点点
今天有这个需求,百度获取到这个效果,记录下来. text-overflow :ellipsis; //让截断的文字显示为点点.还有一个值是clip意思是截断不显示点点 white-space : no ...
- du 使用详解 linux查看目录大小 linux统计目录大小并排序 查看目录下所有一级子目录文件夹大小 du -h --max-depth=1 |grep [
常用命令 du -h --max-depth=1 |grep [TG] |sort #查找上G和T的目录并排序 du -sh #统计当前目录的大小,以直观方式展现 du -h --max-d ...
- sqlserver无ldf日志文件附加的方法(数据库没有完全关闭,无法重新生成日志)
数据库的ldf日志文件被删了,直接附加时报错:数据库没有完全关闭,无法重新生成日志 那怎么恢复数据呢?方法如下: 在数据库中新建一个同名的数据库(文件路径要与原来的相同,ldf的文件名也要相同),然后 ...
- 找不到方法:“Boolean System.Runtime.Serialization.DataContractAttribute.get_IsReference()”的解决办法
找不到方法:“Boolean System.Runtime.Serialization.DataContractAttribute.get_IsReference()”.的解决办法站点发布后部署到了两 ...