MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB InvalidDocument:impossibile codificare l'oggetto

Alla fine l'ho capito. Il problema non era con la codifica. Era con la struttura dei documenti.

Perché sono andato sull'esempio standard di MongoPipeline che non si occupa di elementi scrapy nidificati.

Quello che sto facendo è:BlogItem:"url"...comments =[CommentItem]

Quindi il mio BlogItem ha un elenco di CommentItems. Ora il problema è arrivato qui, per mantenere l'oggetto nel database lo faccio:

self.db[self.collection_name].insert(dict(item))

Quindi qui sto analizzando il BlogItem in un dict. Ma non sto analizzando l'elenco di CommentItems. E poiché il traceback mostra il CommentItem come un dict, non mi è venuto in mente che l'oggetto problematico non fosse un dict!

Quindi, alla fine, il modo per risolvere questo problema è cambiare la riga quando si aggiunge il commento all'elenco dei commenti in quanto tale:

item['comments'].append(dict(comment))

Ora MongoDB lo considera un documento valido.

Infine, per l'ultima parte in cui chiedo perché ricevo un'eccezione sulla console Python e non nello script.

Il motivo è perché stavo lavorando sulla console Python, che supporta solo ascii. E quindi l'errore.