我在这里看到了如何从 mongo shell 完成此操作:MongoDB:使用同一文档中的数据更新文档
但是,我无法弄清楚如何使用 python 驱动程序来做到这一点。因此,我的目标是(在 MySQL 等效项中):
UPDATE coll SET field1 = field1 + field2;
我在这里看到了如何从 mongo shell 完成此操作:MongoDB:使用同一文档中的数据更新文档
但是,我无法弄清楚如何使用 python 驱动程序来做到这一点。因此,我的目标是(在 MySQL 等效项中):
UPDATE coll SET field1 = field1 + field2;
到目前为止,我发现最简单的方法是使用带有 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);"
" });"
"}"))
您可以选择将 js 脚本从 mongo shell 保存在服务器上,db.system.js.save({_id:'myfunc', value: function(){...}});
并从 python 执行db.eval(Code('return myfunc()'))
Col.update({}, {'$set': {'field1': field1 + field2})
空 {} 是选择条件,或 where 子句。