java - 在 Spring Data TypedAggregation 上指定索引

标签 java aggregation-framework spring-data-mongodb spring-mongo

我正在使用 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等待向聚合添加提示。您可以在那里跟进。

关于java - 在 Spring Data TypedAggregation 上指定索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52743253/

相关文章:

java - 使用 Spring 缓存抽象的异步缓存更新

mongodb - 根据两个字段将文档拆分为两个文档(带聚合)

java - SpringData MongoDB 查询嵌套对象和列表对象

java - 在 spring-data 中为 MongoDB 配置 GridFS 模板

java - ASM COMPUTE_MAXS 不适用于基本测试用例?

java - NOOP 在 JOOQ 哪里

java - 仅使用 Java Config 为预定义包激活 @Transactional

node.js - MongoDB:$lookup 数组后的 $sum

mongodb - 仅投影子文档中数组项的部分字段

java - 如何在 spring data mongodb 中对所有字段建立索引?