所以请温柔一点
有一个像这样的 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盘'
}]
但是,我如何从光标访问我的 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": "项目 1"} )
谢谢!
最佳答案
您需要使用 $elemMatch :
http://docs.mongodb.org/manual/reference/projection/elemMatch/
db.testpymongo.find( { "Project": { $elemMatch: { "pname": "project1" } } } )
关于python - Mongodb python 语法获取数组值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17652569/