(二十三)mongodb中group的问题

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介:   <span style="font-size:18px"> 今天的工作中我需要从mongodb数据库中查出一定的数据,并排序后返回给前台,数据库表中包含了ruleID,processingID,userID,updateTime等字段。<br>    同一个ruleID可以对应多条processingID,我要做的是查出同一个ruleID中不同的processingID的条数,然后根
   今天的工作中我需要从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数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
NoSQL MongoDB
14 MongoDB高级 - $group
14 MongoDB高级 - $group
87 0
MongoDB-聚合操作$group
group 括号当中属性的含义: _id: 定义分组规则 <field>: 定义新字段
103 0
|
NoSQL Java MongoDB
mongodb命令行group分组和java代码中group分组
group分组统计是数据库比较常用的功能,mongodb也不例外。不过相对于普通的增删改查,group操作就略微麻烦一些, 这里对group在shell中的操作、使用java原生代码操作以及集成spring进行操作进行一个简单的归纳总结,分组的途径和方法应该都有多种,这里每一样只举一例。 本例中数据源如下: 需要使用group实现的目的是:按年龄分组统计出每一组的数量。 1、mo
5962 0
|
NoSQL MongoDB 数据库
(二十四)mongodb中group的问题二
<span style="font-size:18px">    今天的工作还是继续昨天没有完成的,由于对mongodb数据库的不熟悉,导致昨天的思路上也出了一点问题,我需要查询出同一个ruleID中不同的processingID的条数,然后根据条数来排列先后顺序,如果条数相等的情况下,就根据updateTime再排序。<br>     昨天的思路是先按数量排序,然后再根据ruleID查
1533 0
|
14天前
|
存储 NoSQL MongoDB
数据库数据恢复—MongoDB数据库迁移过程中丢失文件的数据恢复案例
某单位一台MongoDB数据库由于业务需求进行了数据迁移,数据库迁移后提示:“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
|
2月前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
89 15