我正在使用 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和collation。
有一个jira等待向聚合添加提示。您可以在那里跟进。
关于java - 在 Spring Data TypedAggregation 上指定索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52743253/