最近在项目中遇到了Mongodb在聚合查询上的应用,在这里做一个记录。

Spring Data MongoDB 中的聚合框架支持基于以下关键抽象:AggregationAggregationDefinitionAggregationResults。项目中目前用到的是Aggregation。需要进一步了解的可以看文末相关链接资料。

直接上代码解释:

//目的:查询出每个班里有多少姓张的男生,并用班级代号分组输出
//.group("class").count().as("count")就是以班级分组,计算数量,数量命名为“count”
//project中表示需要输出的字段,.and.as就是“classId”这个字段也要输出,字段名为“cId”,.and("cId").previousOperation就是以“cId”作为分组的“_id”输出)

Criteria criteria = Criteria.where("surname").is("张").and("sex").is("M");

Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(criteria),  
            Aggregation.group("class").count().as("count"),  
Aggregation.project("count","class").and("classId").as("cId").and("cId").previousOperation();  

List<BasicDBObject> result = mongoTemplate.aggregate(aggregation,"t_class" BasicDBObject.class).getMappedResults(); 

 

关于聚合的相关文档整理在下面:

(1)聚合查询(aggregation) 之 project:Spring data mongodb 聚合查询(aggregation) 之 project - JavaShuoproject :控制返回的字段,例如一个实体类,咱们只须要部分字段java 1 插入数据app        mongoTemplate.save(new Role(http://www.javashuo.com/article/p-htmtkzmy-mc.html

(2)MongoDB的使用学习之(七)MongoDB的聚合查询(两种方式)附项目源码 - OnTheRoad_Lee - 博客园先来张在路上……铛铛铛……项目源码下载地址:http://files.cnblogs.com/ontheroad_lee/MongoDBDemo.rar此项目是用Maven创建的,没有使用Maven的https://www.cnblogs.com/ontheroad_lee/p/3756247.html

(3)Mongodb官方文档Spring Data MongoDB - Reference Documentationhttps://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo.aggregation (3)关于Spring-Data-Mongodb中的project()的用法,和previousOperation()的用法_冲吧,不要停!-CSDN博客_java mongodb project关于project()方法的使用1,project("name", "netPrice")    project方法的内容是你要映射的字段,相当于{$project: {sumfavour: 1, userid: 1}}2,project().and("foo").as("bar")    如果你想要把一个字段映射成别一个名字的话,就可以用上面的方法,相当于{$project: {https://blog.csdn.net/hotdust/article/details/52605990

(4)MongoDB mongoTemplate查询条作组合例子https://www.iteye.com/blog/huangyongxing310-2342307https://www.iteye.com/blog/huangyongxing310-2342307 欢迎讨论~

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐