pymongo:使用另一个字段更新字段

时间:2012-04-18 07:44:26

标签: python mongodb pymongo

我在这里看到了如何通过mongo shell实现这一点:MongoDB: Updating documents using data from the same document

但是,我无法弄清楚如何使用python驱动程序执行此操作。因此我的目标是(在MySQL中等效):

UPDATE coll SET field1 = field1 + field2;

2 个答案:

答案 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()'))

从python执行

答案 1 :(得分:-2)

Col.update({}, {'$set': {'field1': field1 + field2})

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