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);