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 ...
随机推荐
- [MySQL5.6 新特性] 全局事务标示符(GTID)
GTID的全称为 global transaction identifier , 可以翻译为全局事务标示符,GTID在原始master上的事务提交时被创建.GTID需要在全局的主-备拓扑结构中保持唯 ...
- 在CentOS中安装中文支持
执行命令: # yum groupinstall chinese-support 修改配置文件: # vim /etc/sysconfig/i18n LANG="zh_CN.UTF-8&qu ...
- Windows Server 2012 克隆修改SID
更改SID后蓝屏\黑屏: 环境:Windows Server 2012 R2 目的:克隆出来的系统的SID都是一样,所以想修改各个系统的SID号 现象:克隆出来的系统的SID都是一样,所以想修改各个系 ...
- ios7 tableview scrollsToTop 不执行处理方法
ios7中调用[self.tableview scrollsToTop] 没有效果(ios8中也没有效果) stackflow 处理方法: [self.tableviewscrollRectToVis ...
- 延时函数出错,volatile一例
莫名其妙的错误.使用Systick做的延时. 初始化是这样的: //SysTick配置 SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); if ...
- c++虚函数调用及使用
#include <iostream> using namespace std; class A { public: ; }; class B: public A { public: ; ...
- 利用微软AntiXss Library过滤输出字符,防止XSS攻击
假如项目在前期没有过滤客户提交的字符,那么可以在输出的时候,对输出的字符进行过滤,防止出现XSS跨域攻击. 原理简单:利用ASP.NET API的管道原理,在MessageHandlers中添加一个自 ...
- 数据结构与算法(1)支线任务4——Lowest Common Ancestor of a Binary Tree
题目如下:https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/ Given a binary tree, fin ...
- JavaScript学习基础篇【第1篇】: JavaScript 入门
JavaScript 快速入门 JavaScript代码可以直接嵌在网页的任何地方,不过通常我们都把JavaScript代码放到<head>中,由<script>...< ...
- js 循环
//数组循环var a = [1, 2, 3, 4, 5, 6];for (var i = 0, l = a.length; i < l; i++) { console.log(a[i]);} ...