Skip to main content
 首页 » 编程设计

java中在 Spring Data TypedAggregation 上指定索引

2025年12月25日70kenshinobiy

我正在使用 Spring Data Mongo,并且我们的聚合之一使用了错误的索引。我正在使用:

  • spring-data-mongodb v 1.10.11.RELEASE
  • mongo 驱动程序 3.6.4
  • JAVA 1.8

代码的简化版本如下所示:

Criteria criteria = createMatch("user", "email"); 
AggregationOperation userCriteria  = Aggregation.match(criteria); 
TypedAggregation<NucleusOccupancySummary> aggregation = Aggregation.newAggregation(User.class,userCriteria); 
AggregationResults<NucleusOccupancySummary> aggregationResults = mongoOperations.aggregate(aggregation, User.class, User.class); 

在这种情况下,聚合选择了错误的索引。我已经能够通过向查询添加排序来让它使用正确的索引,但这似乎是实现此目的的一种草率方法。

我想知道是否有人成功地使用聚合或光标提示(或任何其他方式)来指定应用于聚合的索引。


更新:截至 Spring Data MongoDB 3.1通过提供 BSON 文档作为 AggregationOptions.Builder 上的提示来支持聚合提示。

请您参考如下方法:

不,即使 mongo java 驱动程序(AggregateIterable)支持它,也无法在 Spring 中将提示传递给聚合查询。

目前AggregationOptions支持batchSize、cursor、explain、allowDiskUse和collat​​ion。

有一个jira等待向聚合添加提示。您可以在那里跟进。