MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB InvalidDocument:Не може да се кодира обект

Най-накрая го разбрах. Проблемът не беше в кодирането. Беше със структурата на документите.

Тъй като преминах към стандартния пример на MongoPipeline, който не се занимава с вложени scrapy елементи.

Това, което правя е:BlogItem:"url"...comments =[CommentItem]

Така че моят BlogItem има списък с CommentItems. Сега проблемът дойде тук, за запазване на обекта в базата данни, което правя:

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

Така че тук анализирам BlogItem до dict. Но аз не анализирам списъка с CommentItems. И тъй като проследяването показва CommentItem нещо като dict, не ми хрумна, че проблемният обект не е dict!

Така че най-накрая начинът да коригирате този проблем е да промените реда при добавяне на коментара към списъка с коментари като такъв:

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

Сега MongoDB го счита за валиден документ.

И накрая, за последната част, в която питам защо получавам изключение на конзолата на Python, а не в скрипта.

Причината е, че работех върху конзолата на Python, която поддържа само ascii. И по този начин грешката.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Заявка за агрегиране на MongoDB - Преименуване на полета, върнати от вградени документи

  2. Производителност на MongoDB:Изпълняване на MongoDB Aggregations на вторични

  3. Най-ефективният начин за промяна на стойността на поле на низ към неговия подниз

  4. Как работи hideIndex() в MongoDB

  5. Многостепенна йерархия на данните на Ember с вградени винаги