java项目中的mongoDB之聚合

1.引言:

最近工作中使用到monoDB,因此将其记录下来,以便查阅。
参考文献:
1.https://blog.csdn.net/qq_31868149/article/details/82909510
2.https://www.cnblogs.com/ztk1994/p/8572843.html

2.聚合Aggregate:

聚合主要用于计算数据,表达式为db.集合名称.aggregate([{管道:{表达式}}])
在java代码中如下(转载自:https://blog.csdn.net/qq_31868149/article/details/82909510):

 Aggregation agg = Aggregation.newAggregation(    
            Aggregation.match(criteria),//条件  
            Aggregation.group("a","b","c","d","e").count().as("f"),//分组字段    
            Aggregation.sort(sort),//排序  
            Aggregation.skip(page.getFirstResult()),//过滤  
            Aggregation.limit(pageSize)//页数  
         );    
    AggregationResults<Test> outputType=mongoTemplate.aggregate(agg,"test",Test.class);    
    List<Test> list=outputType.getMappedResults(); 

实际代码如下:

public List<FailTestItem> queryLine(Map<String,String>){
	String stratDate = map.get("stratDate");
	String endDate = map.get("endDate");
	String project = map.get("project");
	Criteria criteria = new Criteria();
	criteria.and("project").is("project");
	if(stratDate != null && !stratDate.isEmpty() && endDate != null && !endDate.isEmpty()){
		criteria.and("beginTime").gte(startDate).lte(endDate);
	}
	MatchOperation match = Aggregation.match("criteria");
	MongoTemplate mongoTemplate = MongoDBUtil.getMongoTemplate();
	Aggregation agg = Aggregation.newAggregation(match,
		Aggregation.group("project","testItem").count().as("num"),
		Aggregation.project("num").and("_id.project").as("project").and("_id.testItem").as("testItem"),
		Aggregation.sort(new Sort(Sort.Direction.ASC,"project").and(Sort.Direction.DESC,"num")),
		Aggregation.limit(3));
	AggregationResults<FailTestItem> results = mongoTemplate.aggregate(agg, "failTestItem", FailTestItem.class);
	List<FailTestItem> lfti = results.getMappedResults();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值