1

所以请温柔

有一个像这样的 mongo 文档:

{ "Institute" : "Ucambridge",

   "Project" : [ #array of projects
               {"Sample":[ #array of samples
                      { "workflow" : "abc", "owner" : "peter" }
               ]
               "pname":"project1",
                "dir" : "C drive"
               }

               ]
}

我知道在 mongo 中嵌套循环不是一个好主意,但是这是将数据交给我的方式。

尝试在我的 python 服务器上遍历我的所有项目并提取项目名称。

所以得到光标:

u = mongo.db.testpymongo.find()

可以通过以下方式获得学院:

for x in u : 
print x["Institute"]

可以通过以下方式获取项目:

for x in u : 
    print x["Project"]

返回:

[{u'Sample':[{u'workflow:':u'wf', u'owner':u'peter'} ] u'pname':u'project1 ', u'dir:u'C drive'}]

但是,我如何从光标访问我的 pname 变量?

我努力了 :

1.print x["Project:pname"] # does not work

2.print x["Project":"pname"] # gives unhashable type error 

3.print x["pname"]  # gives Key error 

4.print x["Project"].["pname"] # gives syntax error

5.print x["Project.pname"] # gives key error 

我应该在 find() 函数中使用属性来只返回文档的一部分吗?

即:像这样?

d = mongo.db.testpymongo.find({"Institute":"UCambridge", "Project.pname": "project 1" } )

谢谢 !

4

1 回答 1

1

您需要使用 $elemMatch :

http://docs.mongodb.org/manual/reference/projection/elemMatch/

db.testpymongo.find(  { "Project": { $elemMatch: { "pname": "project1"  } } } )
于 2013-07-15T10:59:03.677 回答