首先介绍哈方法

/** * 利用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 )的更多相关文章

  1. MySQL之高级操作

     新增数据: 基本语法: insert into 表名 [(字段列表)] values(列表值) 在数据插入的时候,假设主键对应的值已经存在,插入一定会失败 主键冲突: 当主键存在冲突的时候(Dupl ...

  2. [Session] SessionHelper2---C#关于Session高级操作帮助类 (转载)

    点击下载 SessionHelper2.rar 这个类是关于Session的一些高级操作1.添加时限制时间2.读取对象3.读取数据等等看下面代码吧 /// <summary> /// 联系 ...

  3. cassandra高级操作之索引、排序以及分页

    本次就给大家讲讲cassandra的高级操作:索引.排序和分页:处于性能的考虑,cassandra对这些支持都比较简单,所以我们不能希望cassandra完全适用于我们的逻辑,而是应该将我们的逻辑设计 ...

  4. MySQL学习笔记_9_MySQL高级操作(上)

    MySQL高级操作(上) 一.MySQL表复制 create table t2 like t1;               #复制表结构,t2可以学习到t1所有的表结构 insert into t2 ...

  5. MySQL学习笔记_10_MySQL高级操作(下)

    MySQL高级操作(下) 五.MySQL预处理语句 1.设置预处理stmt,传递一个数据作为where的判断条件 prepare stmt from "select * from table ...

  6. python列表(list)的使用技巧及高级操作

    python列表(list)的使用技巧及高级操作置顶 2018年03月25日 13:39:41 顽劣的石头 阅读数:5478 标签: python extend bisect list enumera ...

  7. C语言指针的高级操作

    C语言指针的高级操作 指针  指针 在上篇博客中我介绍了C语言指针的最基本操作,那么我在这篇博客中会介绍一下C语言指针的一些骚操作. 指向指针的指针 这名字乍一听有点拗口,再次一听就更加拗口了.先看定 ...

  8. django之创建第8-3个项目-数据库数据提取之高级操作

    1.配置test2.html <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  9. SpringMVC整合Mongodb开发,高级操作

    开发环境: 操作系统:windows xpMongodb:2.0.6依 赖 包:Spring3.2.2 + spring-data-mongodb-1.3.0 + Spring-data-1.5 +  ...

随机推荐

  1. iOSApp -Monkey测试

    IOS操作系统不像Android系统那么方便,各种限制也比较多,目前我的建议还是直接在模拟器上执行monkey测试.如果需要在真机上面执行,可以参考文档: http://testerhome.com/ ...

  2. 如何组织css,写出高质量的css代码

    !如何组织css一:css的API 属于基础部分,这部分的能力用“对”和“错”来评判. 比如说把文字设置为红色,只能用color:red:这种写法是对的,其他任何写法都是错的. 二:css框架 不能用 ...

  3. PHP漏洞全解(一)-PHP网站的安全性问题

    本文主要介绍针对PHP网站常见的攻击方式,包括常见的sql注入,跨站等攻击类型.同时介绍了PHP的几个重要参数设置.后面的系列文章将站在攻击者的角度,为你揭开PHP安全问题,同时提供相应应对方案. 针 ...

  4. android 服务service开启和关闭

    startService()方法开启一个服务. 服务只会开启一次,如果服务已经创建,并且没有销毁,多次调用startService方法只会执行onStartCommand方法和onStart方法. 服 ...

  5. UIcollectionView的使用(首页的搭建4)

    2.5 头部视图

  6. easyui源码翻译1.32--SplitButton(分割按钮)

    前言 扩展自$.fn.linkbutton.defaults.用于$.fn.splitbutton.defaults重写默认值对象.下载该插件翻译源码 类似菜单按钮,分割按钮也与linkbutton和 ...

  7. 轻松使用Nginx搭建web服务器

    如果读者以前做过web开发的话,就应该知道如何去搭建一个web服务器来跑你的web站点,在windows下你可能会选择去用IIS,十分的快捷,在linux下,你可能首先会想到apache,“一哥”( ...

  8. C 语言函数指针

    c代码: #include <stdio.h> int add(int x,int y); int subtract(int x,int y); int domath(int (*math ...

  9. 结构体dtuple_t

    /* SQL data tuple struct */ typedef struct dtuple_struct dtuple_t; /** Structure for an SQL data tup ...

  10. -_-#【Cookie】使用无 cookies 的域

    cookie-free域名提高网页效率