mongdb高级操作(group by )

2023-11-05 06:58
文章标签 操作 高级 group mongdb

本文主要是介绍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 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/348187

相关文章

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

深度解析Python yfinance的核心功能和高级用法

《深度解析Pythonyfinance的核心功能和高级用法》yfinance是一个功能强大且易于使用的Python库,用于从YahooFinance获取金融数据,本教程将深入探讨yfinance的核... 目录yfinance 深度解析教程 (python)1. 简介与安装1.1 什么是 yfinance?