Как вам реализует mongoTemplate.findDistinct ()? - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь использовать функцию findDistinct из mongoTemplate, но я всегда получаю пустой список результатов.Можете ли вы помочь мне определить проблему?Или, может быть, у вас есть самый простой способ сделать это

Примечание: у меня есть данные в моей коллекции (при базовой находке я получаю более 300 результатов в списке, но все эти результаты такие же, за исключениемодин ключ, я хочу, чтобы все отдельные объекты из их значения NAME, например)

Я попробовал это:

List<DiffusionListImpl> list = new ArrayList<>();

    try{
        query = new Query(Criteria.where("CUSTOMERNUMBER").is(1));
        list = mongoTemplate.findDistinct(query, KeyWhereIWantTheDistinct, collectionName,
                KlassResultModel.class);
    } catch (MongoException e) {
        logger.error("MongoException: " + e);
    } catch (Exception e) {
        logger.error("Error: " + e);
    }
    return list;

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Это можно сделать за один вызов БД, используйте приведенный ниже код.

 final List<DiffusionListImpl> result =
        IteratorUtils.toList(this.mongoTemplate.getCollection("collectionName")
            .distinct("fieldName", query.getQueryObject(), DiffusionListImpl.class)
            .iterator());

Для IteratorUtils вы можете использовать apache
import org.apache.commons.collections4.IteratorUtils;

0 голосов
/ 27 февраля 2019

Боже мой, я неправильно прочитал документацию.

Но мне неловко иметь такого рода поддержку этой функции.Я должен сделать вызов в БД, чтобы получить список различных значений, а затем сделать еще один вызов той же БД, чтобы получить объект.

Есть ли способ сделать это за один звонок?(Проблема с производительностью)

...