我在这里看到了如何通过mongo shell实现这一点:MongoDB: Updating documents using data from the same document
但是,我无法弄清楚如何使用python驱动程序执行此操作。因此我的目标是(在MySQL中等效):
UPDATE coll SET field1 = field1 + field2;
答案 0 :(得分:2)
到目前为止,我发现最简单的方法是使用带有db.eval()的pymongo.code.Code类来调整链接的SO答案,如:
db.eval(Code("function () {"
"coll.find({}, {field1: 1, field2: 2})"
".forEach( function(doc) {"
" doc.field1 += doc.field2;"
" coll.save(doc);"
" });"
"}"))
您可以选择使用db.system.js.save({_id:'myfunc', value: function(){...}});
从mongo shell保存服务器上的js脚本
并使用db.eval(Code('return myfunc()'))
答案 1 :(得分:-2)
Col.update({}, {'$set': {'field1': field1 + field2})
Empty {}是选择条件或where子句。