java Mongondb聚合函数&去重
Posted lljboke
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Mongondb聚合函数&去重相关的知识,希望对你有一定的参考价值。
1 去重: 2 3 通过distinct方法我们可以对指定字段进行去重,在mysql也有这个关键字 4 5 DBObject query = new BasicDBObject(); 6 mongoTemplate.getCollection("collectionName").distinct("去重字段名",query) 7 8 9 分组聚合: 10 11 利用aggregation对字段的不同值数量进行统计,例如如下: 12 13 统计字段为content,别名为value 14 15 Aggregation aggregation = Aggregation.newAggregation(Aggregation.group("Content").count().as("value")); 16 //查询条件 17 Criteria criteria = new Criteria().where("条件一").is("条件一"); 18 criteria.and("条件二").is("条件二"); 19 aggregation.match(criteria);List<Map> maps = mongoTemplate.getCollection("collectionName").aggregate(aggregation); 20 21 22 另一种写法 23 24 Criteria criteria = new Criteria().where("条件一").is("条件一"); 25 criteria.and("条件二").is("条件二"); 26 Aggregation.sort(sort), Aggregation.limit(10) 27 Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(criteria),Aggregation.group("Content").count().as("value"),Aggregation.sort(sort), Aggregation.limit(10)); 28 List<DBObject> pvs =mongoTemplate.aggregate(aggregation, "collectionName", DBObject.class).getMappedResults(); 29 30 31 mongo的分页查询: 32 33 直接使用skip()加limit()可以达到分页的效果,但是在数据量大的情况下,此方法性能欠妥 34 35 所有我的优化如下:记录上一次最后一条记录的id,在下一页的查询将其作为一个查询条件,查询大于此id的即可,sort排序设置值为-1表示降序,1为升序。 36 37 DBObject query = new BasicDBObject(); 38 query.put("条件一","条件一"); 39 DBCursor dbCursor; 40 if(page == 1 || page == 0 || StringUtil.isStrEmpty(lastId)) 41 dbCursor = mongoTemplate.getCollection(appid).find(query).sort(new BasicDBObject("name", -1)).skip(size * (page - 1)).limit(size); 42 else 43 BasicDBObject decoment = new BasicDBObject("$gt",new ObjectId(lastId)); 44 query.put("_id",decoment); 45 dbCursor = mongoTemplate.getCollection(appid).find(query).sort(new BasicDBObject("name", -1)).skip(size * (page - 1)).limit(size); 46 47 return dbCursor.toArray();
以上是关于java Mongondb聚合函数&去重的主要内容,如果未能解决你的问题,请参考以下文章
elasticSearch Java API 怎么将查询出来的数据类似sql 一样的distinct 去重某个字段
mongo中的高级查询之聚合操作(distinct,count,group)与数据去重
文本聚合函数(wm_concat, listagg, group_concat, string_agg)
3.1.3MySQL__数据库基本建表查询,登录,sql语句,建表语句,修改表结构,增删改查,as别名,limit分页,distinct去重,聚合函数,