J'ai plusieurs bases de données mongo (certaines peuplées de collections et de documents, certaines vides) et j'essaie de les analyser et de créer un graphique pour le contenu. Je prévois de créer des noeuds pour chaque db, chaque collection et chaque clé de la collection, et de chaque clé pour la valeur (en sautant ainsi les pages). Voici mon code pour obtenir le graphique.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)
Mon problème est que je ne passe l'instruction if if (u'_id' in page.viewvalues()):
Je sais que je reçois des pages (si j'imprimer les pages avant l'instruction if je reçois quelques milliers imprimés, mais l'instruction if est toujours faux. Qu'ont je fait de mal à accéder au dictionnaire retour de la requête find()
Merci
EDIT:.
Je devrais probablement mentionner aussi que quand je fais quelque chose comme ça
for i in page:
au lieu de la de l'instruction if il fonctionne pour un peu, puis se brise en disant TypeError: unhashable type: 'dict'
et j'ai pensé que c'était quand il a frappé une page vide ou lorsque find()
n'a renvoyé aucune page.
Est-ce que cela fonctionne lorsque vous avez une collection qui ne contient aucune donnée? –
Ensuite, trouver ne retournera rien. – alecxe
comment vérifiez-vous cela? (Il lance cette erreur en disant pas un type de dict que j'ai mentionné dans l'édition) –