Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用投影和过滤器在MongoDB中区分查询?_Java_Mongodb_Mongodb Query - Fatal编程技术网

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

Java 如何使用投影和过滤器在MongoDB中区分查询?,java,mongodb,mongodb-query,Java,Mongodb,Mongodb Query,我在mongo中有属性列表,我正在查询一些嵌套字段。这是我的密码 public List<Brand> searchBrands(Request request) { final MongoCollection<Document> collection = mongoDatabase.getCollection("shop"); final Document query = new Document(); final Document projec

我在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;}
公共列表搜索品牌(请求){
最终MongoCollection集合=mongoDatabase.getCollection(“商店”);
最终单据查询=新单据();
最终文件投影=新文件();
最终列表brandList=新的ArrayList();
append(“_id”,request.getId());
query.append(“isActive”,true);
if(request.Year()!=null){
query.append(“attributes.name”、“myYear”);
append(“attributes.value”,request.getYear());
}
投影。追加(“品牌代码”,1.0);
投影.附加(“品牌.说明”,1.0);
投影。追加(“_id”,0.0);
Block processBlock=文档->品牌列表。
添加(Brand.builder().code(document.get(“Brand”),document.class.getString(“code”))
.description(document.get(“品牌”,document.class).getString(“说明”))
.build());
collection.find(query).projection(projection.forEach(processBlock);
返回brandList;}

以上代码返回结果正确,72项同品牌代码。但我想根据品牌代码提取不同的代码。我如何才能做到这一点

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

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

@卢卡斯希望这对你有帮助。如果答案是肯定的,请对答案进行投票,并将其作为答案接受,以便其他人可以从该问题中获得帮助。