Я заметил, что класс org.springframework.data.mongodb.core.aggregation.AggregationOption покрывает лишь небольшое подмножество этих параметров, описанных в документации конвейера агрегации MongoDB: https://docs.mongodb.com/manual/reference/command/aggregate/#syntax
Мне нужно установитьОпция maxTimeMS, но она недоступна в org.springframework.data.mongodb.core.aggregation.AggregationOption:
public class AggregationOptions {
private static final String BATCH_SIZE = "batchSize";
private static final String CURSOR = "cursor";
private static final String EXPLAIN = "explain";
private static final String ALLOW_DISK_USE = "allowDiskUse";
private static final String COLLATION = "collation";
private static final String COMMENT = "comment";
...
Однако другой класс (из mongodb-драйвера) фактически имеет такое поле maxTimeMS, com.mongodb.AggregationOptions:
public class AggregationOptions {
private final Integer batchSize;
private final Boolean allowDiskUse;
private final OutputMode outputMode;
private final long maxTimeMS;
private final Boolean bypassDocumentValidation;
private final Collation collation;
...
Есть идеи / хитрости, как установить этот maxTimeMS для запроса агрегации с помощью Spring Data MongoDB API? Или, может быть, мне нужно построить / написать такую агрегацию, используя собственный запрос?
Кстати. Я знаю, что Spring Data MongoDB поддерживает maxTimeMS для операций поиска, например:
Query.query(mongoCriteria).with(pageable).maxTime(Duration.ofMinutes(4))
Однако мне нужно установить тайм-аут обработки запросов агрегирования на стороне сервера, чтобы предотвратить «бесконечные» запросы, снижающие производительность.
spring-data-mongodb: 2.2.0.RELEASE