Как отличить запрос в MongoDB с проекцией и фильтрами? - PullRequest
0 голосов
/ 06 октября 2019

У меня есть список атрибутов в монго, и я запрашиваю какое-то вложенное поле. Вот мой код,

public List<Brand> searchBrands(Request request) {
    final MongoCollection<Document> collection = mongoDatabase.getCollection("shop");
    final Document query = new Document();
    final Document projection = new Document();
    final List<Brand> brandList = new ArrayList<>();


    query.append("_id", request.getId());
    query.append("isActive", true);
    if (request.Year() != null) {
        query.append("attributes.name", "myYear");
        query.append("attributes.value", request.getYear());
    }

    projection.append("brand.code", 1.0);
    projection.append("brand.description", 1.0);
    projection.append("_id", 0.0);



    Block<Document> processBlock = document -> brandList.
            add(Brand.builder().code(document.get("brand",Document.class).getString("code"))
                    .description(document.get("brand",Document.class).getString("description"))
                    .build());


    collection.find(query).projection(projection).forEach(processBlock);

    return brandList;}

Над кодом возвращаются правильные результаты, 72 элемента с тем же брендом. Но я хочу получить разные в соответствии с брендом. Как я могу это сделать?

1 Ответ

0 голосов
/ 19 октября 2019

Я не уверен, какую клиентскую библиотеку mongodb вы используете для создания запросов для mongodb;Я делюсь запросом, который вы можете запустить в консоли mongodb, чтобы получить желаемые результаты. Я надеюсь, что вы знаете, как создать этот запрос с помощью клиентской библиотеки mongodb

db.shop.distinct('brand.code', myQuery)
//Replace myQuery with your query e.g. {isActive: true}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...