1

だから優しくしてください

次のような mongo doc があります。

{ "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": "プロジェクト 1" } )

ありがとうございました !

4

1 に答える 1