1

我在这里看到了如何从 mongo shell 完成此操作:MongoDB:使用同一文档中的数据更新文档

但是,我无法弄清楚如何使用 python 驱动程序来做到这一点。因此,我的目标是(在 MySQL 等效项中):

UPDATE coll SET field1 = field1 + field2;
4

2 回答 2

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);"
             "    });"
             "}"))

您可以选择将 js 脚本从 mongo shell 保存在服务器上,db.system.js.save({_id:'myfunc', value: function(){...}}); 并从 python 执行db.eval(Code('return myfunc()'))

于 2012-04-18T19:29:53.163 回答
-3
Col.update({}, {'$set': {'field1': field1 + field2})

空 {} 是选择条件,或 where 子句。

于 2012-04-18T08:33:42.943 回答