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>';
}
<?php
header('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);
<?php
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);
echo '总人数'.$g['count'];
echo '<br>总专业'.$g['keys'].'个专业<br>';
foreach ($g['retval'] as $v){
echo $v['dept'].'人数'.$v['count'].'人';
}
<?php
include_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 ...
随机推荐
- Java 使用Memcache
使用spymemcached.jar public class MemcachedJava { public static void main(String[] args) { try { // 连接 ...
- [转]Centos安装zeromq和jzmq
Required packages: autoconf automake libtool gcc gcc-g++ make libuuid-dev git java-1.6.0-openjdk-dev ...
- 优化Select 语句的原则
优化Select 语句的原则 -摘抄<SQL Server 2005 性能监测与优化> Select 语句是数据库应用系统中最常用的语句之一,Select 语句设计的好坏直接影响到应用程序 ...
- 如何在Ubuntu下的VirtualBox虚拟机(Windows XP)里挂载/使用U盘 (转载)
文章来源:http://www.codelast.com/ 在Ubuntu下安装了VirtualBox之后,如果你的虚拟机安装的是Windows XP系统,那么,你会发现,当你插上U盘时,无论你怎么折 ...
- R语言-数据高级管理
数学函数 abs() 绝对值 sqrt() 平方 ceiling() 向上取整 floor() 向下取整 trunc() 截取整数部分 round(x,digits = n) 保留几位小数 统计函数 ...
- Software Development Principle
Every great piece of software begins with customer's big idea. As a professional softeware developer ...
- CE程序
注:开发工具用VS2008 安装Windows mobile设备中心进行调试. 项目平台 1.窗体属性设置,然后将size改成238, 320 2.效果 3.调试过程选择“部署” 4.配置文件的简单读 ...
- HBase工程师线上工作经验总结----HBase常见问题及分析
阅读本文可以带着下面问题:1.HBase遇到问题,可以从几方面解决问题?2.HBase个别请求为什么很慢?你认为是什么原因?3.客户端读写请求为什么大量出错?该从哪方面来分析?4.大量服务端excep ...
- Java三大主流框架概述
Struts.Hibernate和Spring是我们Java开发中的常用关键,他们分别针对不同的应用场景给出最合适的解决方案.但你是否知道,这些知名框架最初是怎样产生的? 我们知道,传统的Java W ...
- JE22环境安装配置(JDK/ANT/TOMCAT/ECLIPSE)
文章中不涉及安装的均为解压即可直接使用的 1.安装JDK最新的J2EE安装会默认安装GlassFish,安装Java SDK就足够了,不是非要装JavaEE SDK,因为Tomcat的lib目录下,已 ...