Khi bạn $unwind reviews trường, cấu trúc json trả về của truy vấn không khớp với Hotel của bạn lớp học nữa. Bởi vì $unwind hoạt động thực hiện reviews một đối tượng phụ thay vì một danh sách. Nếu bạn thử truy vấn của mình trong robomongo hoặc một số công cụ khác, bạn có thể thấy đối tượng trả về của mình là như vậy
{
"_id" : ObjectId("59b519d72f9e340bcc830cb3"),
"id" : "59b23c39c70ff63135f76b14",
"name" : "Signature",
"reviews" : {
"id" : 1,
"userName" : "Salman",
"rating" : 8,
"approved" : true
}
}
Vì vậy, bạn nên sử dụng một lớp khác thay vì Hotel như UnwindedHotel
public class UnwindedHotel {
private String name;
private int pricePerNight;
private Address address;
private Review reviews;
}
UnwindOperation unwindOperation = Aggregation.unwind("reviews");
Aggregation aggregation = Aggregation.newAggregation(unwindOperation);
AggregationResults<UnwindedHotel> results=mongoOperations.aggregate(aggregation,"hotel", UnwindedHotel.class);