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 ...
随机推荐
- MySQL Innodb数据库性能实践——热点数据性能
摘要: 对于大部分的应用来说,都存在热点数据的访问,即:某些数据在一定时间内的访问频率要远远高于其它数据. 常见的热点数据有“最新的新闻”.“最热门的新闻”.“下载量最大”的电影等. 为了了解MySQ ...
- 【转】JSch - Java实现的SFTP(文件下载详解篇)
上一篇讲述了使用JSch实现文件上传的功能,这一篇主要讲述一下JSch实现文件下载的功能.并介绍一些SFTP的辅助方法,如cd,ls等. 同样,JSch的文件下载也支持三种传输模式:OVERWRI ...
- SPOJ bsubstr
题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...
- SOAOffice和iWebOffice、NTKO的比较及其优势(转)
http://www.cnblogs.com/liping13599168/articles/1681465.html SOAOffice和iWebOffice.NTKO的比较及其优势 近年来,市场上 ...
- VMware10.06精简版安装后台运行
VMware10.06精简版安装时会出现一个安装功能选择菜单,里面有一条后台运行必选功能,一般人会跳过条.当你打算在服务器上用vmware时,一定要安装后台运行服务,否则你无法换出正在运行的后台虚拟机 ...
- 黄聪:远程序桌面登录的.NET(C#)开发
MSTSCLib.dll和MsTscAxWrapper.dll下载:LibDll.rar 远程序桌面登录的.NET开发,可以使用MSTSCLib.dll和MsTscAxWrapper.dll两个转换过 ...
- 生成均值文件mean.binaryproto
[感谢:http://www.cnblogs.com/denny402/p/5102328.html] compute_image_mean.bin生成均值文件mean.binaryproto: ca ...
- 利用SQL 建立和删除 LINKED SERVER
USE IS21_xxx; if object_id('tempdb..#tmp') is not null drop table #tmp create table #tmp ( cntr ), i ...
- Knock: 使用压电传感器来检测敲击
原文链接:https://www.arduino.cc/en/Tutorial/Knock 敲击检测 本教程介绍如何使用压电传感器检测振动,比如敲门.桌子或其他固体表面. 压电传感器是一种能够在振动. ...
- mac 设置 git 和github 告别命令行
针对和我一样的新手,大虾们请轻拍. 很多小伙伴都想用git管理自己的代码,或者想在github上上传自己的项目.在网上找了几篇这方面的文章,都是用命令行设置的. 用命令行管理和安装太坑爹,这里有一个简 ...