對於一個複雜的查詢我下降到MongoDB Java API(使用Spring-data的大部分東西),我寫了一個使用BasicDBObjects的聚合語句。如何從AggregationOutput映射到POJO?
DBCollection users = mongoOperations.getCollection("users");
AggregationOutput aggregationOutput = users.aggregate(
new BasicDBObject("$match", new BasicDBObject("_id", userId)),
new BasicDBObject("$project", new BasicDBObject("userProfile.vitals", 1)),
new BasicDBObject("$unwind", "$userProfile.vitals"),
new BasicDBObject("$match", new BasicDBObject("userProfile.vitals.type", type.name())),
new BasicDBObject("$sort", new BasicDBObject("userProfile.vitals.observationDate", -1)),
new BasicDBObject("$limit", 1)
);
此查詢適用,我的問題與本聲明無關。
這個聚合的結果仍然完全符合我的POJO(我的聚合中沒有$組)。
如果我會使用Criteria API查詢,我會得到一個User對象。在AggregationOutput#results()我有一個DBObject。
有沒有辦法調用轉換器,將內部用於將DBObject直接轉換爲我的POJO?
我試圖
mongoTemplate.getConverter().read(User.class,result);
而是拋出一個異常,這是不能夠實例化的java.util.List。這是有道理的,因爲這是一個界面。
任何想法?
謝謝!
Kristof。