问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么在java中获得mongodb分组group的结果中的总数量

发布网友 发布时间:2022-05-01 07:15

我来回答

3个回答

懂视网 时间:2022-05-01 11:36


db.test.group({
 key:{"age":1},
 initial:{"count":0},
 $reduce:function(doc,out){ out.count++; } ,
 $finalize:function(out){ return out; }
 }
 )

执行代码及结果如图:技术分享技术分享

2、java原生代码进行上述操作:
public class MonTest {
 public static void main(String[] args) {
 monGroup();
 }
 public static void monGroup() {
 ServerAddress sa = new ServerAddress("192.168.0.201", 37017);
 List<MongoCredential> mongoCredentialList = new ArrayList<MongoCredential>();
 mongoCredentialList.add(MongoCredential.createMongoCRCredential("admin", "admin", "123456".toCharArray()));
 Mongo client = new MongoClient(sa, mongoCredentialList);
 DB database = client.getDB("admin");
 DBCollection coll = database.getCollection("test");
 DBObject keys = new BasicDBObject("age", 1);
 DBObject condition = null;
 DBObject initial = new BasicDBObject("count", 0);
 String reduce = "function(doc,out){out.count++;}";
 String finalize = "function(out){return out;}";
 BasicDBList dbList = (BasicDBList) coll.group(keys, condition, initial, reduce, finalize);
 if (dbList != null) {
  for (int i = 0; i < dbList.size(); i++) {
  DBObject obj = (DBObject) dbList.get(i);
  Object age = obj.get("age");
  Object count = obj.get("count");
  System.out.println("age:" + age + ",count:" + count);
  }
 }
 }
}

执行结果如图:技术分享

3、集成spring后的操作:
环境搭建可参考:http://blog.csdn.net/tuzongxun/article/details/51404529
dao方法实现代码:
 /**
 * mongodb简单分组查询
 * 
 * @author:tuzongxun
 * @Title: mongoGroup
 * @param @return
 * @date Jul 19, 2016 8:36:19 AM
 * @throws
 */
 @Override
 public BasicDBList mongoGroup() {
 // TODO Auto-generated method stub
 GroupBy groupBy = GroupBy.key("age").initialDocument("{count:0}").reduceFunction("function(doc, out){out.count++}")
  .finalizeFunction("function(out){return out;}");
 GroupByResults<UserModel> res = mongoTemplate.group("test", groupBy, UserModel.class);
 DBObject obj = res.getRawResults();
 BasicDBList dbList = (BasicDBList) obj.get("retval");
 return dbList;
 }


对应的实体model:
package spring_mongo.models;
import java.io.Serializable;
public class UserModel implements Serializable {
 private static final long serialVersionUID = 1L;
 private String name;
 private int age;

 public UserModel(String name, int age) {
 super();
 this.name = name;
 this.age = age;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public int getAge() {
 return age;
 }

 public void setAge(int age) {
 this.age = age;
 }

 @Override
 public String toString() {
 return "UserModel [name=" + name + ", age=" + age + "]";
 }

}

junit测试方法:
@Test
 public void mongoGroup() {
 BasicDBList dbList = userDao.mongoGroup();
 if (dbList != null) {
  for (int i = 0; i < dbList.size(); i++) {
  DBObject obj = (DBObject) dbList.get(i);
  Object age = obj.get("age");
  Object count = obj.get("count");
  System.out.println("age:" + age + ",count:" + count);
  }
 }
 }

运行结果如图:技术分享
技术分享



mongodb命令行group分组和java代码中group分组

标签:

热心网友 时间:2022-05-01 08:44

用.count()方法获取总数,可以直接在group中获取。

热心网友 时间:2022-05-01 10:02

java中直接将结果映射成POJO,然后获取其属性即可。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苍雷剑和翻天印哪个好 还有玄冰剑和照妖镜 武林外传现在收购一套+15或者+16的法宝玄冰剑,苍雷剑大概是多少钱,求解... 武林外传苍雷剑玄冰剑可以用什么符强化 诗经桢字诗句 删除电脑里的共享文件夹在哪里设置电脑共享文件怎么删除 为什么我点击qq面板上的qq游戏会显示密码不正确 "CPR"真的是“检查口袋并跑步”的缩写吗? cpr屏蔽是什么意思? CPR是什么意思 CPD是什么意思 网络广告直销CPR (Cost Per Response ) 尤西比奥,菲戈,鲁伊科斯塔,C罗,费尔南多戈麦斯,谁才是葡萄牙历史上最伟大的球星? C罗之前,葡萄牙还出了哪些足球巨星? 飓风:自然的暴力阅读题 有哪些有趣的书可以激起人阅读的兴趣? 论综合能力和球队领导力,C罗和路易斯菲戈谁更优秀? 继C罗之前,葡萄牙还出过哪些足球巨星? 有哪些知识面杂、读起来又有趣的书可以推荐? 大西洋热带风暴“奥费利娅”已加强为一级飓风了吗? 多米尼加6至7月降水稀少的原因是什么? 美国科罗拉多州遭强暴风雪,今年的自然灾害为什么如此频繁? 多米尼克气候及温度 历史上的飓风 Java怎么给WebService加密 现在纳尼c罗和当年菲戈孔塞桑的边路哪个厉害? 饥荒飓风季节怎么过 有什么特点 飓风季节怎么看不了 实现用http请求对接spring mvc接口 微信支付接口从http换到https有什么影响 为什么特斯拉、小鹏汽车都喜欢弄单独的中控大屏,这有什么特别之处吗? 飓风“汉娜”过境美国,飓风都是怎么形成的呢? 精神病患者国家补助多少? 精神病人国家有没有补助? 精神病国家可以关押吗,规定是什么 有精神病的人国家有什么补助吗 具体怎么办理??? 国家对精神病人怎么处理? 小学生不需要每天穿校服,对吗?如题 谢谢了 绢丝和天丝是一样的么 精神病患者国家有补贴吗? 精神病享有国家哪些补助? 国家对精神病人有什么政策? 关于精神病患者,国家出台了哪些法律进行保护? 精神病患者国家免费治疗吗? 国家对精神病患者有什么政策? 西安哪里有装修用彩色、艺术玻璃批发点? 有色光学玻璃那里有卖的呢? 哪里有收废玻璃的,多少钱一吨? 汽车废玻璃多少钱一吨? 有色玻璃有什么用途?越全越好呐、快点呐、 泡沫板怎么安装? 夏沫是什么意思