sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB InvalidDocument:Kan inte koda objekt

Äntligen kom jag på det. Problemet låg inte i kodningen. Det var med strukturen på dokumenten.

Eftersom jag gick ut på standardexemplet MongoPipeline som inte handlar om kapslade scrapy-objekt.

Det jag gör är:BlogItem:"url"...comments =[CommentItem]

Så min BlogItem har en lista med CommentItems. Nu kom problemet hit, för att bevara objektet i databasen gör jag:

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

Så här analyserar jag BlogItem till ett diktat. Men jag analyserar inte listan över CommentItems. Och eftersom spårningen visar CommentItem ungefär som ett dikt, föll det mig inte in att det problematiska objektet inte är ett dikt!

Så till slut sättet att lösa detta problem är att ändra raden när du lägger till kommentaren till kommentarslistan som sådan:

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

Nu ser MongoDB det som ett giltigt dokument.

Till sist, för den sista delen där jag frågar varför jag får ett undantag på pythonkonsolen och inte i skriptet.

Anledningen är att jag arbetade med python-konsolen, som bara stöder ascii. Och därmed felet.



  1. MongoDB Kafka Sink Connector bearbetar inte RenameByRegex-processorn

  2. Läsning av DBname.system.indexes misslyckades på Atlas-klustret av mongobee efter att ha blivit ansluten

  3. Frågefält i en MongoDB-samling.

  4. MongoDB:infoga dokument med specifikt id istället för autogenererat ObjectID