(二十三)mongodb中group的问题
今天的工作中我需要从mongodb数据库中查出一定的数据,并排序后返回给前台,数据库表中包含了ruleID,processingID,userID,updateTime等字段。
同一个ruleID可以对应多条processingID,我要做的是查出同一个ruleID中不同的processingID的条数,然后根据条数来排列先后顺序,如果条数相等的情况下,就根据updateTime再排序。
由于对mongodb数据库不理解导致在模仿代码操作的时候出了问题,我一开始的代码是:
GroupBy groupBy=null;
Criteria criteria=new Criteria();
//分组条件
groupBy=GroupBy.key("processingMethodID").initialDocument("{count:0}")
.reduceFunction("function(doc,prev){prev.count+=doc.count}");
因为是几乎照搬的代码,所以我并不知道prev.count和doc.count代表的究竟是什么意思,别人那样写,所以我就这样写了。
犯错之后一番折腾,总算是初步理解了这个用法的意思,于是代码更新成了下边的情况:
GroupBy groupBy=null;
Criteria criteria=new Criteria();
//分组条件
groupBy=GroupBy.key("processingMethodID").initialDocument("{count:0}")
.reduceFunction("function(doc,prev){prev.count++}");
之所以这样改,是因为在group分组查询的时候,prev.count会对每一组进行计数,最终保存每一组的总条数,而doc.count代表的是数据表中的count字段的内容。
在别人的代码中写成prev.count+=doc.count,是因为他的表中有这个字段,而我的报错是因为我的表中没有这个字段,弄懂了具体的意思,那么实现起来也就简单了
(二十三)mongodb中group的问题的更多相关文章
- 浅析mongodb中group分组
这篇文章主要介绍了浅析mongodb中group分组的实现方法及示例,非常的简单实用,有需要的小伙伴可以参考下. group做的聚合有些复杂.先选定分组所依据的键,此后MongoDB就会将集合依据选定 ...
- (二十四)mongodb中group的问题二
今天的工作还是继续昨天没有完成的,由于对mongodb数据库的不熟悉,导致昨天的思路上也出了一点问题,我需要查询出同一个ruleID中不同的processingID的条数,然后根据条数来排列先后顺序, ...
- C#代码 利用MongoDB中Group聚合函数查询
例子: public static void getUserRFM(DateTime beginTime, DateTime endTime) { MongoDat ...
- C#代码利用MongoDB中Group聚合函数查询
例子: public static void getUserRFM(DateTime beginTime, DateTime endTime) { MongoDat ...
- Java进阶(二十三)java中long类型转换为int类型
java中long类型转换为int类型 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参 ...
- Expo大作战(二十三)--expo中expo kit 高级属性(没干货)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- 在MongoDB中执行查询与创建索引
实验目的: (1)掌握MongoDB中数据查询的方法: (2)掌握MongoDB中索引及其创建: 实验内容: 一. MongoDB中数据查询的方法: (1)find函数的使用: (2)条件操作符: a ...
- sql中group by用来干嘛的
sql中group by用来干嘛的 一.总结 一句话总结: 1.group by用来分类汇总的,by后面接要分的类 2.group by既然是分类汇总,那就要和聚合函数结合使用,因为要汇总啊 3.ha ...
- MongoDB中的group
在Mongodb的查询中,有类似于SQL中group by功能的group函数.两者的功能有些类似,但是区别也是比较明显的. 对于SQL来说,group by的作用就是安装依据列来将数据表中的记录分成 ...
随机推荐
- 【linux之文件查看,操作】
一.shell如何处理命令 1.shell会根据在命令中出现的空格字符,将命令划分为多个部分 2.判断第一个字段是内部命令还是外部命令 内部命令:内置于shell的命令(shell builtin) ...
- ElasticSearch安装中遇到的一些问题
前段时间部署ElasticSearch,现把安装中遇到的一些问题和注意细节与大家分享一下. 系统:CentOS7.2 0.安装JDK 8,配置环境变量 官网下载地址:http://www.oracle ...
- Linux下jdk环境配置
1.下载jdk http://www.oracle.com/technetwork/java/javase/downloads/index.html 我选择64位的版本 jdk-8u121-linux ...
- java常用工具类[待补充]
生成指定范围指定大小的随机数: String code = String.valueOf((int)(Math.random()*(9999-1000+1))).substring(0,4);
- dedecms data文件夹外迁
出于网站安全考虑,我们一般要把data文件夹迁移到网站根目录外面. dedecms data文件夹外迁方法: 1. 修改首页文件中配置文件路径 打开/index.php,把代码 if(!file_ex ...
- 搭建VUE项目的准备(利用vue-cli来构建项目)
首先需要明确的是:Vue.js 不支持 IE8 及其以下 IE 版本,一般用与移动端,基础:开启最高权限的DOS命令(否则会出现意外的错误提示) 注意:个人小推荐如果我们不知道如何才能开启最高权限 ...
- 判断json是否包含了每个键 PHP
(1)可以用array_key_exists去判断object对象或array数组中是否含有某个键: (2)不可以用isset去判断判断object对象或array数组中是否含有某个键 $decode ...
- Sphinx下载、安装、配置、Hello World、文档阅读
sphinx下载.安装.配置.Hello World.查看文档
- 深入理解Python的字符编码
原文:http://lukejin.iteye.com/blog/598303 在处理中文的时候,我们有时候会碰到中文乱码的问题. 究其根本原因是正确的字节序列按照错误的编码方式解码成字符 或者正确的 ...
- leetcode第一天
leetcode 第一天 2017年12月24日 第一次刷leetcode真的是好慢啊,三道题用了三个小时,而且都是简单题. 数组 1.(674)Longest Continuous Increasi ...