如何使用Java Play中的MorphiaQuery从集合中获取所有_id值并将其存储在arraylist中

时间:2018-12-18 01:32:28

标签: java playback morphia

我有以下函数应返回“代理”集合中的所有_id值:

public static List<Agency> findByAgencyIds(List<String> ids){
    MorphiaQuery q = Agency.q();
    System.out.println("ids: " + ids);
    q.field("_id").in(ids);    
    return q.asList();
}

以下是使用上一个功能的功能

public static BasicDBObject getQueryAgenciasMultiples(String agency) {
    List<String> agencyIds = new ArrayList<String>(Arrays.asList(agency.split("\\s*,\\s*")));
    List<String> finalList = Lists.newArrayList();
    for (String id : agencyIds) {
        finalList.add(id.trim());
    }
    List<Agency> agencyList = Agency.findByListIds(finalList);

    List<DBRef> dbrefs = new ArrayList();
    agencyList.forEach(a -> dbrefs.add(new DBRef("Agency", a.getId())));                    
    return new BasicDBObject("$in", dbrefs);
}

问题:

由于我不知道如何从MongoDB中检索ObjectId值类型,因此该查询未从“ Agency”中检索_id字段值。

所以,我的问题是?如何从“代理商”集合中获取所有_id字段值?

欢迎任何帮助。在此先感谢您,

1 个答案:

答案 0 :(得分:0)

如果您有Query,则可以对其调用asKeyList(),以获取查询返回的每个实体的Key字段的_id实例的列表。