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 + ...
随机推荐
- iOSApp -Monkey测试
IOS操作系统不像Android系统那么方便,各种限制也比较多,目前我的建议还是直接在模拟器上执行monkey测试.如果需要在真机上面执行,可以参考文档: http://testerhome.com/ ...
- 如何组织css,写出高质量的css代码
!如何组织css一:css的API 属于基础部分,这部分的能力用“对”和“错”来评判. 比如说把文字设置为红色,只能用color:red:这种写法是对的,其他任何写法都是错的. 二:css框架 不能用 ...
- PHP漏洞全解(一)-PHP网站的安全性问题
本文主要介绍针对PHP网站常见的攻击方式,包括常见的sql注入,跨站等攻击类型.同时介绍了PHP的几个重要参数设置.后面的系列文章将站在攻击者的角度,为你揭开PHP安全问题,同时提供相应应对方案. 针 ...
- android 服务service开启和关闭
startService()方法开启一个服务. 服务只会开启一次,如果服务已经创建,并且没有销毁,多次调用startService方法只会执行onStartCommand方法和onStart方法. 服 ...
- UIcollectionView的使用(首页的搭建4)
2.5 头部视图
- easyui源码翻译1.32--SplitButton(分割按钮)
前言 扩展自$.fn.linkbutton.defaults.用于$.fn.splitbutton.defaults重写默认值对象.下载该插件翻译源码 类似菜单按钮,分割按钮也与linkbutton和 ...
- 轻松使用Nginx搭建web服务器
如果读者以前做过web开发的话,就应该知道如何去搭建一个web服务器来跑你的web站点,在windows下你可能会选择去用IIS,十分的快捷,在linux下,你可能首先会想到apache,“一哥”( ...
- C 语言函数指针
c代码: #include <stdio.h> int add(int x,int y); int subtract(int x,int y); int domath(int (*math ...
- 结构体dtuple_t
/* SQL data tuple struct */ typedef struct dtuple_struct dtuple_t; /** Structure for an SQL data tup ...
- -_-#【Cookie】使用无 cookies 的域
cookie-free域名提高网页效率