springboot MongoTemplate 之Aggregation 实现常见操作

本文介绍了如何在SpringBoot中利用MongoTemplate的Aggregation功能进行复杂数据查询和处理。首先,需要配置MongoDB的连接信息并注入MongoTemplate。在实际应用中,要注意查询顺序,例如条件、排序和限制的顺序类似于MySQL。聚合操作中,可以实现条件查询、排序和分组统计。使用Aggregation.group()进行分组统计,并可以结合其他方法进行详细的数据分析。查询结果建议使用实体类封装,避免使用Map,并可以通过withOptions()设置内存限制。
摘要由CSDN通过智能技术生成

很多复杂的查询都是从简单的部分组合的实现,续接昨天的通过Query查询后,今天接着补充聚合管道-Aggregation 进行数据查询,处理。相比较Query查询,Aggregation 再处理数据时会方便很多,也便于优化查询语句。

首先springboot引入mongodb的配置也是从引入pom依赖->配置文件中mongodb的连接信息配置->在具体service中注入MongoTemplate 。这些上一篇文章都已经有写,不在重复。

需要注意导包是这些:org.springframework.data.mongodb.core.**;

import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

下面直接上demo。我这都是在单元测试中写的。

1.聚合管道实现简单的条件,排序数据查询功能。

注意点:执行 顺序可以完全参考mysql的书写顺序。

mysql是先where语句,然后排序,然后limit。

mongodb一样。也是必须先是条件语句,然后limit和sort。条件语句必须放到第一位ÿ

好的,如果你正在使用MongoDB数据库,并且是通过Spring Data MongoDB中的MongoTemplate进行操作的话,那么可以使用Aggregation.group()方法对数据进行分组聚合操作Aggregation.group()方法接受一个或多个字段作为参数,并将这些字段作为分组依据。例如,如果你想按照某个字段进行分组,可以这样写: ``` Aggregation.group("fieldName"); ``` 如果你想对某个字段进行特殊处理,可以使用Aggregation操作符,例如: 1. $sum:求和 ``` Aggregation.group("fieldName").sum("otherFieldName").as("total"); ``` 这个操作会对"otherFieldName"字段进行求和,并将结果保存在名为"total"的新字段中。 2. $avg:求平均值 ``` Aggregation.group("fieldName").avg("otherFieldName").as("average"); ``` 这个操作会对"otherFieldName"字段进行求平均值,并将结果保存在名为"average"的新字段中。 3. $max:求最大值 ``` Aggregation.group("fieldName").max("otherFieldName").as("maxValue"); ``` 这个操作会对"otherFieldName"字段进行求最大值,并将结果保存在名为"maxValue"的新字段中。 4. $min:求最小值 ``` Aggregation.group("fieldName").min("otherFieldName").as("minValue"); ``` 这个操作会对"otherFieldName"字段进行求最小值,并将结果保存在名为"minValue"的新字段中。 5. $push:将某个字段的值放入一个数组中 ``` Aggregation.group("fieldName").push("otherFieldName").as("fieldValues"); ``` 这个操作会将"otherFieldName"字段的值放入一个名为"fieldValues"的数组中。 6. $addToSet:将某个字段的值放入一个集合中 ``` Aggregation.group("fieldName").addToSet("otherFieldName").as("fieldValues"); ``` 这个操作会将"otherFieldName"字段的值放入一个名为"fieldValues"的集合中。 除了上述操作符之外,还有很多其他的操作符可以使用。你可以根据自己的需求进行选择。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万米高空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值