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

MongoDB InvalidDocument:Kan ikke kode objekt

Endelig fandt jeg ud af det. Problemet var ikke med kodning. Det var med strukturen af ​​dokumenterne.

Fordi jeg gik ud på standard MongoPipeline-eksemplet, som ikke omhandler indlejrede scrapy-genstande.

Det jeg gør er:BlogItem:"url"...comments =[CommentItem]

Så mit BlogItem har en liste over CommentItems. Nu kom problemet her, for at bevare objektet i databasen gør jeg:

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

Så her analyserer jeg BlogItem til en diktat. Men jeg analyserer ikke listen over CommentItems. Og fordi sporingen viser CommentItem ligesom en diktat, faldt det ikke ind for mig, at det problematiske objekt ikke er et diktat!

Så endelig er måden at løse dette problem på ved at ændre linjen, når du tilføjer kommentaren til kommentarlisten som sådan:

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

Nu betragter MongoDB det som et gyldigt dokument.

Til sidst, til den sidste del, hvor jeg spørger, hvorfor jeg får en undtagelse på python-konsollen og ikke i scriptet.

Årsagen er, at jeg arbejdede på python-konsollen, som kun understøtter ascii. Og dermed fejlen.



  1. Hvad gør --bindip-konfigurationsmuligheden i mongodb?

  2. Optimering af luftstrømsopgave, der overfører data fra BigQuery til MongoDB

  3. Forespørgsel for at få data fra de sidste X minutter med Mongodb

  4. Hvordan administrerer jeg MongoDB-forbindelser i en Node.js-webapplikation?