FindOne嵌入式文档

时间:2012-02-05 18:36:26

标签: mongodb

我已bars嵌入了foos,所以现在我想从bar获得一个foo

foo = db.foos.findOne()
bar = foo.bars.findOne({property: 'Hello World'})

那么我怎么能达到这个目标呢?

1 个答案:

答案 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,因此在客户端,您将需要从嵌套栏数组中加载第一项

相关问题