在 Spring Data TypedAggregation 上指定索引

Specify an Index on a Spring Data TypedAggregation

我正在使用 Spring 数据 Mongo,而我们的一个聚合使用了错误的索引。我正在使用:

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

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[ 上的 hint 支持聚合提示=34=].

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

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

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