You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Data MongoDB 1.9.3中@Aggregation注解导入失败求助

问题处理方案

原因说明

org.springframework.data.mongodb.repository.Aggregation注解是Spring Data MongoDB 2.0版本及以上才引入的特性,而你使用的1.9.3.RELEASE属于早期版本(对应Spring Data Kay SR3),该版本根本不存在这个注解,因此无法导入。

替代实现方案(适配1.9.3.RELEASE)

由于必须使用1.9.3版本,你可以通过以下两种原生支持的方式实现聚合查询:

方案1:使用MongoTemplate手动构建聚合管道

直接借助MongoTemplate提供的聚合API,构建并执行聚合操作,这是1.9.3版本的标准用法:

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.aggregation.MatchOperation;
import org.springframework.data.mongodb.core.aggregation.GroupOperation;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.beans.factory.annotation.Autowired;

public class YourService {

    @Autowired
    private MongoTemplate mongoTemplate;

    public List<YourResultDto> getAggregatedData() {
        // 定义聚合步骤:匹配条件
        MatchOperation matchStage = Aggregation.match(Criteria.where("status").is("VALID"));
        // 定义聚合步骤:按字段分组统计
        GroupOperation groupStage = Aggregation.group("type").count().as("total");
        
        // 组合所有聚合步骤
        Aggregation aggregation = Aggregation.newAggregation(matchStage, groupStage);
        
        // 执行聚合,指定集合名和结果映射类
        AggregationResults<YourResultDto> results = mongoTemplate.aggregate(aggregation, "your_collection_name", YourResultDto.class);
        
        return results.getMappedResults();
    }
}

方案2:在Repository中使用@Query执行原生聚合查询

如果希望在Repository接口中定义聚合方法,可以通过@Query注解编写MongoDB原生聚合语法,1.9.3版本支持该方式:

import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import java.util.List;

public interface YourEntityRepository extends MongoRepository<YourEntity, String> {

    // 原生MongoDB聚合语法,?0对应方法参数
    @Query(value = "[ { $match: { status: ?0 } }, { $group: { _id: '$type', total: { $sum: 1 } } } ]", count = false)
    List<YourResultDto> aggregateByStatus(String status);
}

额外提醒

1.9.3.RELEASE是发布于2017年的老旧版本,早已停止维护,存在潜在的安全漏洞和兼容性问题。如果生产环境允许,建议制定升级计划逐步迁移到受支持的版本;若必须保留当前版本,上述两种方案可满足聚合查询需求。

内容的提问来源于stack exchange,提问作者Sameer Makwana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:52:53