MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Spring-data-mongo kann java.util.List nicht mit Constructor instanziieren

Beim $unwind reviews Feld, stimmt die JSON-Struktur der Abfrage nicht mit Ihrem Hotel überein Klasse nicht mehr. Denn $unwind Betrieb macht reviews ein Unterobjekt anstelle einer Liste. Wenn Sie Ihre Abfrage in Robomongo oder einigen anderen Tools ausprobieren, können Sie sehen, dass Ihr Rückgabeobjekt so aussieht

{
  "_id" : ObjectId("59b519d72f9e340bcc830cb3"),
  "id" : "59b23c39c70ff63135f76b14",
  "name" : "Signature",
  "reviews" : {
    "id" : 1,
    "userName" : "Salman",
    "rating" : 8,
    "approved" : true
  }
}

Sie sollten also statt Hotel eine andere Klasse verwenden wie 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);