有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java选择数组中的数组元素

这是数据库中的对象

{ 
    "_id" : { "$oid" : "53a9ce071e24a7a0a4bef03a"} ,
    "name" : "name4" , 
    "sections" : [ 
        { 
            "id" : "sectionId1" , 
            "subs" : [ 
                { "name" : "name1" , "enable" : true} , 
                { "name" : "name2" , "enable" : false} , 
                { "name" : "name3" , "enable" : true}
            ]
        }, 
        { 
            "id" : "sectionId2", 
            "subs" : [ 
                { "name" : "name1" , "enable" : true} , 
                { "name" : "name5" , "enable" : false} , 
                { "name" : "name6" , "enable" : true}
            ]
        }, 
        { "id" : "sectionId3"}
    ]
}

这是我的代码:

BasicDBObject query = new BasicDBObject();
query.append("name", "name4");
query.append("sections", new BasicDBObject(
    "$elemMatch", new BasicDBObject("id", "sectionId2")
));
query.append("sections.subs", new BasicDBObject(
    "$elemMatch", new BasicDBObject("name", "name1")
));

我正在尝试访问'sectionId2'的'subs'中的'name1'。但我的查询返回'sectionId1'中的子项。我只有“名字1”有这个问题。我可以访问“name2”、“name3”等,没有任何错误,因为它们是唯一的

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    可能是因为您使用的是$elemMatch,$elemMatch投影只返回数组中的第一个匹配元素see it here