最近,我将我的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