0

ここで何が起こっているのかを理解するのに助けが必要であり、これを避けるための提案が必要です!

これが私のスニペットです:

      result = [list of dictionary objects(dictionary objects have 2 keys and 2 String values)]
      copyResults = list(results);
      ## Here I try to insert each Dict into MongoDB (Using PyMongo)
      for item in copyResults:
        dbcollection.save(item) # This is all saving fine in MongoDB.

しかし、元の結果リストをもう一度ループすると、MongoDBのObjectIdである新しいフィールドが自動的に追加された辞書オブジェクトが表示されます。

コードの後半で、元の結果リストをjsonに変換する必要がありますが、このObjectIdが問題を引き起こしています。これが元のリストに追加される理由はわかりません。

すでにコピーや新しいリストの作成などを試しました。保存後も元のリストにObjectIdが追加されます。

提案してください!

4

2 に答える 2

1

mongodb に保存されたすべてのドキュメントには'_id'フィールドが必要です。これは、コレクション内のドキュメント間で一意である必要があります。提供しない場合、mongodb はObjectId( bson.objectid.ObjectIdfor pymongo) を使用して自動的に作成します。

ドキュメントを json にエクスポートする必要がある場合は、json 化する前に「_id」フィールドをポップする必要があります。

于 2013-03-14T04:14:44.763 に答える
0

または、次を使用できます。
rows['_id'] = str(rows['_id'])

更新する必要がある場合は、忘れずに元に戻してください

于 2013-03-21T12:08:51.550 に答える