我有几个 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 语句if (u'_id' in page.viewvalues()):
,我知道我正在获取页面(如果我在 if 语句之前打印页面,我会打印几千页,但 if 语句总是错误的。我在访问返回的字典时做错了什么从find()
查询?谢谢。
编辑:
我可能还应该提到,当我做这样的事情时
for i in page:
而不是 if 语句,它工作了一会儿,然后中断说TypeError: unhashable type: 'dict'
,我认为这是当它碰到一个空页面或find()
没有返回页面时。