我已bars
嵌入了foos
,所以现在我想从bar
获得一个foo
:
foo = db.foos.findOne()
bar = foo.bars.findOne({property: 'Hello World'})
那么我怎么能达到这个目标呢?
答案 0 :(得分:2)
我想你有这样的事情:
foo
{
_id: 1,
bars :[
{name: "1"},
{name: "2"}
]
}
因此,mongodb查询始终只返回根文档:
db.foos.find({"bars.name": 1})
以上查询将返回包含名称等于“1”的栏的所有foos。在客户端获得您需要的酒吧。
此外,如果您只需要嵌入式数组中的一项,则可以使用slice and include only root documen t来加载最少的数据:
db.foos.find({"bars.name": 1}, {bars:{$slice: 1}, _id: 1})
上面的查询将返回包含名称等于“1”的栏的所有foos,但它也只有一个匹配的嵌套栏并且只返回父文档的id,因此在客户端,您将需要从嵌套栏数组中加载第一项