繁体   English   中英

如何使用投影和过滤器区分 MongoDB 中的查询?

[英]How to distinct query in MongoDB with projection and filters?

我在 mongo 中有属性列表,并且正在查询一些嵌套字段。 这是我的代码,

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 项具有相同的brand.code。 但是我想根据brand.code获取不同的信息我该怎么做?

我不确定您使用哪个 mongodb 客户端库来为 mongodb 创建查询; 我正在分享您可以在 mongodb 控制台中运行的查询以获得您想要的结果。 我希望您知道如何使用您的 mongodb 客户端库创建此查询

db.shop.distinct('brand.code', myQuery)
//Replace myQuery with your query e.g. {isActive: true}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM