私はいくつかのmongoデータベース(コレクションとドキュメントが取り込まれたもの、空のもの)を持っており、それらを解析してコンテンツのグラフを作成しようとしています。各データベース、各コレクション、コレクション内の各キー、および各キーから値へのノードを作成する予定です (ページをスキップします)。これがグラフを取得するための私のコードです。
for db in dbs:
G.add_node(db)
for col in c[db].collection_names():
G.add_node(col)
G.add_edge(db, col, weight = 0.9)
for page in c[db][col].find():
if (u'_id' in page.viewvalues()):
pprint.pprint(page)
G.add_node(page[u'_id'])
G.add_edge(col, page[u'_id'], weight = 0.4)
for key, value in page.items():
G.add_node(key)
G.add_edge(col, key, weight = 0.1)
G.add_node(value)
G.add_edge(key,value)
私の問題は、if (u'_id' in page.viewvalues()):
ページを取得していることを知っているifステートメントを決して渡さないことです(ifステートメントの前にページを印刷すると、数千が印刷されますが、ifステートメントは常にfalseです。返された辞書にアクセスする際に何が間違っていましたかfind()
クエリから?ありがとう。
編集:
私がこのようなことをするときは、おそらくそれについても言及する必要があります
for i in page:
if ステートメントの代わりに、少し動作してから壊れて、空のページにヒットしたとき、またはページが返されなかっTypeError: unhashable type: 'dict'
たときだと思いました。find()