2017-07-20 2 views
0

Je suis en train de stocker des données JSON dans un MongoDB en utilisant pyMongo et quand je lance le script python suivant:Erreur sur insert_many(): document doit être une instance de dict

import pymongo 
from pymongo import MongoClient 

client = MongoClient() 

db = client.twitterdata 

f = open('twitterdata.json', 'r') 

dblist = [] 

for line in f: 
    dblist.append(line) 

db.collection.insert_many(dblist) 

f.close() 

Je reçois l'erreur:

TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping 

Le fichier json, à savoir twitterdata.json a 10 lignes par ligne ayant un dict. J'ai l'intention de stocker le dict sur chaque ligne comme un document individuel dans la collection.

Répondre

3

Essayez:

import json 

dblist = [] 
for line in f: 
    dblist.append(JSON.loads(line)) 

Vous essayez d'importer une liste de chaînes.

connexes:

+0

Il résout l'erreur, pouvez-vous donner un lien à la documentation ou expliquer comment cela prend thats dict dans la chaîne? – kartikeykant18

+0

@ kartikeykant18 je pourrais être en mesure de développer sur la façon de convertir le json stringifié en bson, ou le 'collections.MutableMapping' je n'ai pas regardé la documentation pour comprendre ce que l'erreur disait. Je pourrais le voir en regardant le code que vous avez donné? – jmunsch