sql >> Database >  >> NoSQL >> MongoDB

MongoDB InvalidDocument:kan object niet coderen

Eindelijk kwam ik er achter. Het probleem lag niet bij de codering. Het was met de structuur van de documenten.

Omdat ik afging op het standaard MongoPipeline-voorbeeld dat geen geneste scrapy-items behandelt.

Wat ik doe is:BlogItem:"url"...comments =[CommentItem]

Dus mijn BlogItem heeft een lijst met CommentItems. Nu kwam het probleem hier, voor het volhouden van het object in de database doe ik:

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

Dus hier ben ik het BlogItem aan het ontleden naar een dictaat. Maar ik analyseer de lijst met CommentItems niet. En omdat de traceback het CommentItem een ​​beetje als een dictaat weergeeft, kwam het niet bij me op dat het problematische object geen dictaat is!

Dus eindelijk de manier om dit probleem op te lossen is om de regel te veranderen bij het toevoegen van de opmerking aan de opmerkingenlijst als zodanig:

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

Nu beschouwt MongoDB het als een geldig document.

Ten slotte, voor het laatste deel waar ik vraag waarom ik een uitzondering krijg op de python-console en niet in het script.

De reden is dat ik aan de python-console werkte, die alleen ascii ondersteunt. En daarmee de fout.



  1. sql-query naar mongodb?

  2. Relaties in Document-georiënteerde database?

  3. Mongodb c#-stuurprogramma en ISODate

  4. Hoe $setDifference in array &Object te gebruiken met Mongo DB