对于一个复杂的查询,我使用了 MongoDB Java API(我的大部分内容都使用 Spring-data),并使用 BasicDBObjects 编写了一个聚合语句。
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(我的聚合中没有 $group)。
如果我将 Criteria API 用于查询,我会得到一个 User 对象。在 AggregationOutput#results() 我有一个 DBObject。
有没有办法调用内部用于将 DBObject 直接转换为我的 POJO 的转换器?
我试过了
mongoTemplate.getConverter().read(User.class,result);
但这引发了一个异常,它无法实例化 java.util.List。这是有道理的,因为那是一个界面。
有任何想法吗?
谢谢!
克里斯托夫。