ここでmongoシェルからこれをどのように達成できるかを見ました:MongoDB:同じドキュメントのデータを使用してドキュメントを更新する
ただし、Pythonドライバーを使用してこれを行う方法を理解することはできません。したがって、私の目標は(MySQLと同等)です。
UPDATE coll SET field1 = field1 + field2;
ここでmongoシェルからこれをどのように達成できるかを見ました:MongoDB:同じドキュメントのデータを使用してドキュメントを更新する
ただし、Pythonドライバーを使用してこれを行う方法を理解することはできません。したがって、私の目標は(MySQLと同等)です。
UPDATE coll SET field1 = field1 + field2;
これまでのところ、pymongo.code.Code クラスと db.eval() を使用して、リンクされた SO の回答を次のように適合させるのが最も簡単な方法であることがわかりました。
db.eval(Code("function () {"
"coll.find({}, {field1: 1, field2: 2})"
".forEach( function(doc) {"
" doc.field1 += doc.field2;"
" coll.save(doc);"
" });"
"}"))
オプションで、mongo シェルから js スクリプトをサーバーに保存し、db.system.js.save({_id:'myfunc', value: function(){...}});
python から実行できます。db.eval(Code('return myfunc()'))
Col.update({}, {'$set': {'field1': field1 + field2})
空の {} は選択基準、または where 句です。