(二十三)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,是因为他的表中有这个字段,而我的报错是因为我的表中没有这个字段,弄懂了具体的意思,那么实现起来也就简单了  
涂宗勋 CSDN认证博客专家 web安全 系统安全 安全架构
【若想不迷路,记得点关注,动动小手指,点点全是福】

6年java工作经验,现居湖北武汉,有过支付、OA、CA、OAUTH2等工作经验,现从事车联网行业。
爱好分享,个人博客blog.tzxcode.cn,微信tuzongxun,qq1160569243,欢迎来撩。
©️2020 CSDN 皮肤主题: 成长之路 设计师: Amelia_0503 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值