MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB InvalidDocument:não é possível codificar o objeto


Finalmente eu percebi. O problema não era com a codificação. Foi com a estrutura dos documentos.

Porque eu fui no exemplo padrão do MongoPipeline, que não lida com itens fragmentados aninhados.

O que estou fazendo é:BlogItem:"url"...comments =[CommentItem]

Então meu BlogItem tem uma lista de CommentItems. Agora veio o problema aqui, para persistir o objeto no banco de dados eu faço:
self.db[self.collection_name].insert(dict(item))

Então aqui estou analisando o BlogItem para um dict. Mas eu não estou analisando a lista de CommentItems. E como o traceback exibe o CommentItem como um dict, não me ocorreu que o objeto problemático não é um dict!

Então, finalmente, a maneira de corrigir esse problema é alterar a linha ao anexar o comentário à lista de comentários como tal:
item['comments'].append(dict(comment))

Agora o MongoDB o considera como um documento válido.

Por fim, para a última parte em que pergunto por que estou recebendo uma exceção no console python e não no script.

A razão é porque eu estava trabalhando no console python, que suporta apenas ascii. E assim o erro.