mongdb高级操作(group by )
首先介绍哈方法
/** * 利用java驱动自带函数分组查询 *
@param key 用来分组文档的字段 【group by key】 *
@param cond 执行过滤的条件 【where name=? and age=?】 *
@param initial reduce中使用变量的初始化 * @param reduce reduce(参数:当前文档和累加器文档.) *
@param fn 结束后执行函数 *
@return */
参考例子1:
group(DBObject key,DBObject cond,DBObject initial,String reduce,String fn ){
//key:用来分组文档的字段。和keyf两者必须有一个 [类似于group by]
BasicDBObject key = new BasicDBObject(); key.put("optCode", true);
//执行过滤的条件 [类似于where]
BasicDBObject[] array={ new BasicDBObject("startTimeLong",
new BasicDBObject("$gte", startTime)),
new BasicDBObject("startTimeLong", new BasicDBObject("$lte", endTime)) };
BasicDBObject cond = new BasicDBObject(); //cond.put("$and",array);
//initial:reduce中使用变量的初始化
BasicDBObject initial = new BasicDBObject();
initial.append("count", 0);
//reduce(当前文档和累加器文档.)
String reduce = "function(doc, aggr){" + " aggr.count += 1;" + " }";
String fn = null;
dao.group(key, cond, initial, reduce, fn);
}
参考例子2:
//求总数和平局数
public Double findAverage(String sumField, String groupField, BasicDBObject where)
{
// 分组项字段 【group by groupField】
DBObject key = new BasicDBObject(groupField, null)
// 结果数据计数器 【select avg,rsdata.sum,rsdata.count 】
BasicDBObject counter = new BasicDBObject();
DBObject index = new BasicDBObject();
index.put("count", 0);
index.put("sum", 0);
counter.put("rsdata", index);counter.put("avg", 0);}
// reduce处理函数
String procFunction = "function(doc,aggr){" + "aggr.rsdata.sum+=parseFloat(doc." + sumField + ");" + "aggr.rsdata.count+=1;" + "}";
// 结果处理函数
String finallyFunction = "function(doc){" + "doc.avg=doc.rsdata.sum/doc.rsdata.count;" + "}";
BasicDBList rs = (BasicDBList) getCollection().group(key, where, counter, procFunction, finallyFunction);
if (null != rs && rs.size() > 0)
{BasicDBObject data = (BasicDBObject) rs.get(0);
return Double.parseDouble(data.get("avg").toString());} return 0.0;
}
mongdb高级操作(group by )的更多相关文章
- MySQL之高级操作
新增数据: 基本语法: insert into 表名 [(字段列表)] values(列表值) 在数据插入的时候,假设主键对应的值已经存在,插入一定会失败 主键冲突: 当主键存在冲突的时候(Dupl ...
- [Session] SessionHelper2---C#关于Session高级操作帮助类 (转载)
点击下载 SessionHelper2.rar 这个类是关于Session的一些高级操作1.添加时限制时间2.读取对象3.读取数据等等看下面代码吧 /// <summary> /// 联系 ...
- cassandra高级操作之索引、排序以及分页
本次就给大家讲讲cassandra的高级操作:索引.排序和分页:处于性能的考虑,cassandra对这些支持都比较简单,所以我们不能希望cassandra完全适用于我们的逻辑,而是应该将我们的逻辑设计 ...
- MySQL学习笔记_9_MySQL高级操作(上)
MySQL高级操作(上) 一.MySQL表复制 create table t2 like t1; #复制表结构,t2可以学习到t1所有的表结构 insert into t2 ...
- MySQL学习笔记_10_MySQL高级操作(下)
MySQL高级操作(下) 五.MySQL预处理语句 1.设置预处理stmt,传递一个数据作为where的判断条件 prepare stmt from "select * from table ...
- python列表(list)的使用技巧及高级操作
python列表(list)的使用技巧及高级操作置顶 2018年03月25日 13:39:41 顽劣的石头 阅读数:5478 标签: python extend bisect list enumera ...
- C语言指针的高级操作
C语言指针的高级操作 指针 指针 在上篇博客中我介绍了C语言指针的最基本操作,那么我在这篇博客中会介绍一下C语言指针的一些骚操作. 指向指针的指针 这名字乍一听有点拗口,再次一听就更加拗口了.先看定 ...
- django之创建第8-3个项目-数据库数据提取之高级操作
1.配置test2.html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- SpringMVC整合Mongodb开发,高级操作
开发环境: 操作系统:windows xpMongodb:2.0.6依 赖 包:Spring3.2.2 + spring-data-mongodb-1.3.0 + Spring-data-1.5 + ...
随机推荐
- C# dynamic
[TestMethod] public void DynamicTest() { dynamic Customer = new ExpandoObject(); Customer.Name = &qu ...
- iOS8上放大缩小的动画
CGAffineTransformMakeScale这个方法我们以前经常使用,但是在IOS8上出现问题了 [UIView animateWithDuration:0.3 animations:^{ b ...
- 服务器环境搭建系列(四)-mysql篇
1.按照上一篇服务器环境搭建系列(三)-JDK篇中的方法检查系统是否已经预装Mysql并卸载. 2.下载mysql,这里是MySQL-server-5.5.25-1.linux2.6.x86_64.r ...
- strstr函数与strcmp函数
1.strstr函数主要完成在一个字串中寻找另外一个字串 函数实现工程如下:摘自http://baike.baidu.com/link?url=RwrzOxs0w68j02J2uQs5u1A56bEN ...
- SQL Union和SQL Union All用法
SQL UNION 操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每 ...
- 项目管理系统 SQL2005数据库查询CPU100%问题研究
[一篮饭特稀原创,转载请注明出自http://www.cnblogs.com/wanghafan/p/4595084.html] 在项目管理系统中出现查询工程明细出现CPU100%卡死症状: 1.打 ...
- Navicat 导入导出
当我们对mysql数据库进行了误操作,造成某个数据表中的部分数据丢失时,肯定就要利用备份的数据库,对丢失部分的数据进行导出.导入操作了.Navicat工具正好给我们提供了一个数据表的导入导出功能. 1 ...
- [Hadoop源码解读](五)MapReduce篇之Writable相关类
前面讲了InputFormat,就顺便讲一下Writable的东西吧,本来应当是放在HDFS中的. 当要在进程间传递对象或持久化对象的时候,就需要序列化对象成字节流,反之当要将接收到或从磁盘读取的字节 ...
- 利用 Dolby® Digital Plus 提供优质音频体验
John Deutscher Azure媒体服务首席项目经理 随着媒体设备的增多,一项日益增长的需求是,视频流服务能够向用户提供超高音频质量和具有 5.1 环绕音响的优质内容.通过 Azure媒体 ...
- iOS开发中自定义字体的方法
http://www.cnblogs.com/iyou/archive/2014/05/25/3751669.html 1. 首先下载你想要设置的字体库,例如设置方正启体简体 2. 添加到工程,一定要 ...