使用Morphia同时查询父母和孩子

时间:2016-04-18 08:36:04

标签: java mongodb morphia

假设我们有两个对象:

class Server {
    ...
    String location;
    List<Status> statusList;
    ...
}

class Status {
    ...
    int code;
    ...
}

如何获取具有相同位置的所有服务器的状态列表。例如,如果code == 1location == "Beijing"

如果我想使用createQuery(Server.class)然后使用.filter(),那么输出不能是状态列表!

2 个答案:

答案 0 :(得分:0)

不应该为此工作吗?

List<Server> oops = createQuery(Server.class).find("location","Beijing").find("statusList.code", 1).asList();

答案 1 :(得分:0)

Morphia不支持返回类似的不同类型。它将返回创建查询时指定的类型。您可以通过创建带状态的查询和服务器集合并仅投影“状态”字段来伪造它。您需要禁用验证。