Как получить все значения _id из коллекции и сохранить их в arraylist с помощью MorphiaQuery в Java Play - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть следующая функция, которая должна возвращать все значения _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);
}

Проблема:

Запрос не получает значения поля _id из «Агентства», поскольку я не знаю, как получить тип значения ObjectId из MongoDB.

Итак, мой вопрос: как я могу получить все значения полей _id из коллекции «Агентство»?

Любая помощь приветствуется.Заранее спасибо, наилучшие пожелания

1 Ответ

0 голосов
/ 18 декабря 2018

Если у вас есть Query, вы можете вызвать asKeyList(), чтобы получить список Key экземпляров для полей _id каждой сущности, возвращаемой запросом.

...