MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB InvalidDocument:Tidak dapat menyandikan objek

Akhirnya saya mengetahuinya. Masalahnya bukan dengan pengkodean. Itu dengan struktur dokumen.

Karena saya menggunakan contoh MongoPipeline standar yang tidak menangani item scrapy bersarang.

Apa yang saya lakukan adalah:BlogItem:"url"...comments =[CommentItem]

Jadi BlogItem saya memiliki daftar CommentItems. Sekarang masalahnya datang ke sini, untuk mempertahankan objek dalam database yang saya lakukan:

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

Jadi di sini saya mem-parsing BlogItem ke dict. Tetapi saya tidak mem-parsing daftar CommentItems. Dan karena traceback menampilkan jenis CommentItem seperti dict, tidak terpikir oleh saya bahwa objek yang bermasalah bukanlah dict!

Jadi akhirnya cara untuk memperbaiki masalah ini adalah dengan mengubah baris saat menambahkan komentar ke daftar komentar seperti:

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

Sekarang MongoDB menganggapnya sebagai dokumen yang valid.

Terakhir, untuk bagian terakhir di mana saya bertanya mengapa saya mendapatkan pengecualian di konsol python dan bukan di skrip.

Alasannya adalah karena saya sedang mengerjakan konsol python, yang hanya mendukung ascii. Dan dengan demikian kesalahan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb - dapatkan nilai tertinggi dari jumlah yang dikelompokkan berdasarkan bidang

  2. masukkan bidang dalam subdokumen dalam array dengan indeks di MongoDB

  3. Apakah mungkin untuk mengubah TimeZone default di MongoDB menggunakan Rails 3?

  4. Di Mongo, bagaimana saya mencocokkan semua item koleksi dengan array yang lebih besar?

  5. Bisakah MongoDB Mengisi Dokumen Kosong