选择数组内数组的元素

时间:2014-06-24 20:34:04

标签: java arrays mongodb

这是数据库中的对象

{ 
    "_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")
));

我正在尝试访问' name1'在' subs' < sectionId2'。但是我的查询会返回< sectionId1'中的sub。我这个问题仅针对' name1'。我可以访问名称2',' name3'等没有任何错误,因为它们是唯一的。

提前致谢!

1 个答案:

答案 0 :(得分:0)

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