MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB InvalidDocument:Nie można zakodować obiektu

W końcu to rozgryzłem. Problem nie dotyczył kodowania. To było ze strukturą dokumentów.

Ponieważ poszedłem na standardowy przykład MongoPipeline, który nie zajmuje się zagnieżdżonymi elementami scrapy.

To, co robię, to:BlogItem:"url"...comments =[CommentItem]

Więc mój BlogItem zawiera listę elementów CommentItem. Teraz pojawił się problem, aby utrzymać obiekt w bazie danych:

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

Więc tutaj parsuję BlogItem na dykt. Ale nie analizuję listy CommentItems. A ponieważ śledzenie wyświetla element CommentItem jak dyktowanie, nie przyszło mi do głowy, że problematyczny obiekt nie jest dyktatem!

Więc wreszcie sposobem na rozwiązanie tego problemu jest zmiana linii podczas dodawania komentarza do listy komentarzy jako takiej:

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

Teraz MongoDB uważa to za ważny dokument.

Na koniec, w ostatniej części, w której pytam, dlaczego otrzymuję wyjątek na konsoli Pythona, a nie w skrypcie.

Powodem jest to, że pracowałem na konsoli Pythona, która obsługuje tylko ascii. I stąd błąd.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pole agregatu MongoDB w tablicy obiektów

  2. Eksport MySQL do MongoDB

  3. Usuwanie dokumentów z kolekcji mongodb z node.js

  4. 3 sposoby na wybranie wiersza z minimalną wartością w SQL

  5. MongoError,err:błąd zduplikowanego klucza E11000