python - Mongodb python 语法获取数组值。

标签 python arrays mongodb variables

所以请温柔一点

有一个像这样的 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/

相关文章:

python - 如何从图像中分离出人脸?

python - 如何将不同的 pytest 测试附加到同一个 junit xml 文件而不是覆盖它?

java - ID检查char方法?

node.js - blogSchema 未定义

python - 如何让 Sprite 旋转面向鼠标?

python - 合并 pandas.DataFrame 上的每两列

c# - 如何每次单击按钮一次退回一件商品?

javascript - 为什么这个 JavaScript 不工作

mongodb - MongoDB、CouchDB 和 Cassandra 需要 Solr/Lucene 吗?

ruby-on-rails - 使用 Rails 搜索 MongoDB