Spring Aggregation Framework и MongoDB версии 3.6 - PullRequest
0 голосов
/ 11 июня 2018

Мы написали несколько запросов Spring Data Mongo Aggregation в нашем приложении Spring Boot (версия 1.5.3).Когда мы писали агрегаты, мы использовали MongoDB версии 3.4.Все работало нормальноКогда мы обновили MongoDB до версии 3.6, агрегаты перестали работать.Возникает следующая ошибка: «com.mongodb.MongoCommandException: команда завершилась с ошибкой 9: требуется опция« курсор », за исключением агрегирования с аргументом объяснения».

Мы добавили аргумент объяснения.Больше нет исключения, но коллекция mappedResults теперь пуста.Необработанные результаты присутствуют.

Вот соответствующий раздел кода:

Aggregation aggregation = Aggregation
    .newAggregation(matchOperation, unwindOperation, groupOperation, projectionOperation,
        sortOperation, groupOperationPush, sortOperationNext)
    .withOptions(Aggregation.newAggregationOptions().allowDiskUse(true).build());

AggregationResults<OurDomainClass> results = mongoTemplate.aggregate(aggregation, "ourCollection", OurDomainClass.class);


return results.getMappedResults();

Я читал, что в Spring Data MongoDB версии 2.1 Spring адаптировался к MongoDB версии 3.6.Однако в Maven Central версия Spring Data MongoDB достигает только 2.07.

Есть ли обходной путь, который мы можем применить к нашему коду агрегации, возможно, каким-то образом отобразить необработанные результаты вручную в наш класс домена?

1 Ответ

0 голосов
/ 18 июня 2018

Стабильные версии доступны в Maven Central, в то время как для других (т.е. на момент написания версии 2.1) вам необходимо указать хранилище в вашем pom.xml:

<dependencies>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>2.1.0.BUILD-SNAPSHOT</version>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>spring-libs-snapshot</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/libs-snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

см. Spring-data-mongodb quickstart

возможно, ваш запрос агрегации недопустим или ведет себя по-другому, чтобы проверить, что вы можете включить ведение журнала mongotemplate и проверить сгенерированный запрос агрегации, который вы можете скопировать/ Вставьте в консоли Монго, чтобы проверить это.logback.xml фрагмент:

<logger name="org.springframework.data.mongodb" level="DEBUG"/>
<logger name="org.springframework.data.mongodb.core.MongoTemplate" level="DEBUG"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...