1

私はいくつかの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()

4

1 に答える 1