mongdb高级操作(group by )
来源:互联网 发布:dbf文件恢复数据库 编辑:程序博客网 时间:2024/05/17 08:35
首先介绍哈方法
/** * 利用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 )
- group by 高级函数使用
- Oracle高级查询,GROUP BY
- Hive group by操作
- Hive group by操作
- MongDB读取操作(c++)
- 高级sql学习--增强group by!!!
- Oracle高级查询之GROUP BY
- Oracle高级查询之GROUP BY
- Oracle高级查询之GROUP BY
- Oracle group by高级用法之rollup
- Oracle高级查询之GROUP BY
- Oracle高级查询之GROUP BY
- Oracle高级查询之GROUP BY
- group by 高级用法超详细总结
- MySQL 操作 —— group by(按组)
- Hive高级查询(group by、 order by、 join等)
- 07-Hive高级查询order by、group by
- eclipse安装tomcat插件
- Android开发中常用的Eclipse快捷键
- ABAP 点击搜索帮助后取的值。
- Could not get lock /var/cache/apt/archives/lock
- PMP报考流程
- mongdb高级操作(group by )
- Qt 中messageBox使用
- 最长公共子序列问题
- 通过patch更好理解x264代码的小技巧
- VC操纵Excel的数据文件
- The Hardest Problem Ever
- iOS - 代码查看控制台打印内存使用情况:
- 个人经验总结
- jsp(get中文乱码问题)