使用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的属性$$
你有什么想法?
谢谢.