Укажите индекс для типа данных SpringAggregation - PullRequest
0 голосов
/ 10 октября 2018

Я использую Spring Data Mongo, и одно из наших агрегатов использует неправильный индекс.Я использую:

  • spring-data-mongodb v 1.10.11.RELEASE
  • драйвер монго 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);

В этом случае при агрегировании выбирается неправильный индекс.Я смог заставить его использовать правильный индекс, добавив сортировку в запрос, но это кажется небрежным способом сделать это.

Мне интересно, имел ли кто-нибудь успех в использовании агрегацииили указатели курсора (или любым другим способом) для указания индекса, который следует использовать для агрегирования.

1 Ответ

0 голосов
/ 10 октября 2018

Нет, нет способа передать подсказку в запрос агрегации весной, даже если драйвер mongo (AggregateIterable) его поддерживает.

В настоящее время AggregationOptions поддерживает batchSize, cursor, объяснять,allowDiskUse и параметры сортировки.

Существует jira в ожидании добавления подсказки к агрегации.Вы можете следить там.

...