小编Che*_*man的帖子

在Spring Data Mongodb中使用$$ ROOT来检索整个文档

使用mongodb shell,我能够执行一个检索整个文档的聚合查询.为了做到这一点,我使用$$ ROOT变量.

db.reservations.aggregate([
   { $match : { hotelCode : "0360" } },
   { $sort : { confirmationNumber : -1 , timestamp: -1 } },
   { $group : {
       _id : "$confirmationNumber",
       timestamp :{$first : "$timestamp"},
       fullDocument :{$first : "$$ROOT"}
   }}
])
Run Code Online (Sandbox Code Playgroud)

它检索内容为confirmationNumber,timestamp,fullDocument的对象.fullDocument是整个文档.

我想知道是否可以对Spring-Data和聚合框架做同样的事情.

我的java代码是:

TypedAggregation<ReservationImage> aggregation = newAggregation(
   ReservationImage.class,
   match(where("hotelCode").is(hotelCode)),
   sort(Direction.DESC,"confirmationNumber","timestamp"),
   group("confirmationNumber").
     first("timestamp").as("timestamp").
     first("$$ROOT").as("reservationImage"));
  List<myClass> items = mongoTemplate.aggregate(
    aggregation, 
    myClass.class).getMappedResults();
Run Code Online (Sandbox Code Playgroud)

错误是:org.springframework.data.mapping.PropertyReferenceException:找不到类型myClass的属性$$

你有什么想法?

谢谢.

java mongodb spring-data aggregation-framework

0
推荐指数
2
解决办法
2764
查看次数