몇 가지 몽고 데이터베이스 (일부는 콜렉션과 문서로 채워져 있고 일부는 비어 있음)가 있으며이를 분석하여 내용 그래프를 작성하려고합니다. 각 db, 각 컬렉션 및 컬렉션의 각 키에 대한 노드를 만들고 각 키에서 값 (페이지를 건너 뛰기)에 대한 노드를 만들 계획입니다. 다음은 그래프를 가져 오는 코드입니다.PyMongo, Graphing
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 문은 항상 false 인 경우 내가 (페이지를 얻고 알고 있다면 난을 통과하지 것입니다. 무엇을 가지고 ? 나는 find()
쿼리 감사에서 반환 된 사전을 액세스하는 잘못한
편집 :.
아마도 언급해야하는 나는이
for i in page:
뭔가를 할 때
대신에 if 문이 조금 작동하고 TypeError: unhashable type: 'dict'
을 말하면서 페이지가 반환되지 않았거나 find()
페이지가 반환되지 않은 것으로 나타났습니다.
데이터가없는 컬렉션이있는 경우 작동합니까? –
그러면 find는 아무 것도 반환하지 않습니다. – alecxe
어떻게 확인하나요? (편집에서 언급 한 dict 형식이 아니라는 오류를 던지고 있습니다.) –