sql >> データベース >  >> NoSQL >> MongoDB

MongoDB InvalidDocument:オブジェクトをエンコードできません

    ついに私はそれを理解しました。問題はエンコーディングではありませんでした。それは文書の構造によるものでした。

    ネストされたスクレイプアイテムを処理しない標準のMongoPipelineの例に取り掛かったためです。

    私がやっていることは:BlogItem: "url" ... comments =[CommentItem]

    したがって、私のBlogItemにはCommentItemのリストがあります。ここで問題が発生しました。データベースにオブジェクトを永続化するためです。

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

    だからここで私はBlogItemをdictに解析しています。しかし、私はCommentItemsのリストを解析していません。また、トレースバックはCommentItemをdictのように表示するため、問題のあるオブジェクトがdictではないことは私には思い浮かびませんでした。

    したがって、最後にこの問題を修正する方法は、コメントをコメントリストに追加するときに行を変更することです。

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

    現在、MongoDBはそれを有効なドキュメントと見なしています。

    最後に、スクリプトではなくPythonコンソールで例外が発生する理由を尋ねる最後の部分です。

    その理由は、ASCIIのみをサポートするPythonコンソールで作業していたためです。したがって、エラー。



    1. MongoDBドキュメントに含まれる配列に含まれるサブドキュメントを更新します

    2. 文字列からMongoDBObjectIDへの変換

    3. MongoDB:一括挿入(Bulk.insert)と複数挿入(insert([...]))

    4. MongoDBで、配列の一部のみを返す方法は?