Java 选择数组中的数组元素

Java 选择数组中的数组元素,java,arrays,mongodb,Java,Arrays,Mongodb,这是数据库中的对象 { _id:{$oid:53a9ce071e24a7a0a4bef03a}, 姓名:姓名4, 章节:[ { id:ID1节, subs:[ {name:name1,enable:true}, {name:name2,enable:false}, {name:name3,enable:true} ] }, { 编号:第ID2节, subs:[ {name:name1,enable:true}, {name:name5,enable:false}, {name:name6

这是数据库中的对象

{ _id:{$oid:53a9ce071e24a7a0a4bef03a}, 姓名:姓名4, 章节:[ { id:ID1节, subs:[ {name:name1,enable:true}, {name:name2,enable:false}, {name:name3,enable:true} ] }, { 编号:第ID2节, subs:[ {name:name1,enable:true}, {name:name5,enable:false}, {name:name6,enable:true} ] }, {id:sectionId3} ] } 这是我的代码:

BasicDBObject查询=新建BasicDBObject; query.appendname,name4; query.appendsections,新的BasicDBObject $elemMatch,新基本目标,第ID2节 ; query.appendsections.subs,新的BasicDBObject $elemMatch,新的BasicDBObjectname,名称1 ; 我正在尝试访问“sectionId2”的“subs”中的“name1”。但是我的查询返回'sectionId1'中的子项。我只有“name1”有这个问题。我可以访问“name2”、“name3”等,没有任何错误,因为它们是唯一的


提前谢谢

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

访问对您意味着什么?您是要在查询中查找该元素还是要更新数组中的选定元素?无论哪种情况,positional$都只返回匹配中的外部数组位置。你的问题是什么?