2016-07-16 1 views
0

私はPythonでMongoからデータを取得しています。すべての文書をカーソルから配列に移動します。次に、ドキュメントを処理し、オブジェクト/辞書にいくつかの新しいプロパティを追加しようとしますが、KeyErrorと言います。 mongoによって返されたオブジェクトを修正しようとしたときにNodejsでこのような動作が見られました。ソリューションには単純なオブジェクトを取得するためにquery.lean()。exec()があります。 pymongoに相当するものはありますか?は、Pythonでmongoから返されたオブジェクトにプロパティを追加できません

+0

あなたは 'nontree'スタイルを使用し、理由のmongo>ダンプ>変更> update''ので、不可解な 'mongo-hash to mongo-hash(mongo-hash)'!あなたのアップデートに別の 'クエリフィルタ 'が含まれていると大きな問題が発生します。これを確認してください:http://stackoverflow.com/questions/18363472/mongoose-lean-query-virtuals-not-showing – dsgdfg

+0

私は分かりません。私はクエリを作成し、データを取得しました。今私は私のプログラムの中でそれを操作しようとしています。私はまだデータベース自体を更新していない。 – user137717

+0

は 'jsonID'で動作するので、' _id'を定義しますか? https://docs.mongodb.com/manual/reference/method/db.collection.update/ @ user137717 – dsgdfg

答えて

0

dictに新しいキーを設定するときにKeyErrorが発生しません。あなたは何か間違っていることを意味しています。

KeyError例外が発生した参照:https://stackoverflow.com/a/10116540/4273834

をただ要約する:あなたがキーを設定しようとするのではなく、あなたが存在しないキーの値を取得しようとする場合はKeyError例外が発生しません。

cursor = col.find({}) 
my_list = list(cursor) 
my_list[0]['added_field'] = 'whatever' 

をジャストサイドノート:ここで

は動作するコードスニペットですリスト(カーソル)はPythonでデータを処理する方法の方法ではありません。 (リストを持っているいくつかの特定の理由がない限り...)推奨の方法は、直接カーソルをループにある:

for doc in cursor: 
    doc['new_key'] = 'test' 
    do_whatever_you_want_with_the_doc(doc) 
関連する問題