在mongo 4.0的spring-boot 2.0.6中,聚合不起作用

时间:2018-10-23 04:12:02

标签: mongodb spring-boot aggregation-framework

最近,我将我的spring-boot项目升级到了2.0.6,并将数据库也升级到了Mongodb 4.0。

我不得不解决一些问题。例如,Mongo现在需要在所有聚合中定义一个游标,因此我添加了“ withOptions”方法来包括它。

除聚合外,对db的所有查询均可正常运行。毫无疑问,在所有这些情况下,Mongodb都返回一个空数组,没有错误。以前在Mongo 3.2上运行过的相同源代码现在根本不起作用。

spring生成的管道看起来结构良好,因为我在MongoDB shell中运行它并正确返回了结果。

我做错了什么?

我的聚合:

Aggregation aggr = newAggregation(AnalyticsMedia.class, 
            match(Criteria
                    .where("hostId").in(hostId)
                    .and("eventTimestamp").gte(from).lte(to)
            ),              
            group("objectId")
                .first("objectType").as("objectType")
                .count().as("countViews")
                .sum("duration").as("totalTime")
            sort(Sort.Direction.DESC, "totalTime")                              
    ).withOptions(new AggregationOptions(false, false, new BasicDBObject("batchSize", 20)));

    AggregationResults<AnalyticsContentsUseIntermediate> groupResults = mongoTemplate.aggregate(aggr, AnalyticsMedia.class, AnalyticsContentsUseIntermediate.class);

return groupResults.getMappedResults();

关于mongo的依赖树:

+--- org.springframework.boot:spring-boot-starter-data-mongodb:2.0.6.RELEASE
|    +--- org.mongodb:mongodb-driver:3.6.4
|    |    +--- org.mongodb:bson:3.6.4
|    |    \--- org.mongodb:mongodb-driver-core:3.6.4
|    |         \--- org.mongodb:bson:3.6.4
|    \--- org.springframework.data:spring-data-mongodb:2.0.11.RELEASE -> 1.8.4.RELEASE

0 个答案:

没有答案