Spring Data MongoDB - как настроить maxTimeMS для конвейерного запроса агрегации - PullRequest
1 голос
/ 10 октября 2019

Я заметил, что класс 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

...