查找值并在同一语句中添加相同的值

时间:2017-06-01 15:32:22

标签: python python-2.7 pymongo

我在pymongo中使用两个语句来首先找到一个值,添加到该值,然后更新文档。所以说我得到原始值:

orig_item = list(db.collection.find({"id": 1}))[0]['A']

然后我需要为原始文件添加一个新值并再次更新文档:

plus_item = orig_item + 5
db.collection.update_one({"id"   : 1},
                         {"$set" : {"A" : plus_item}})

所以我的问题是,有更有效的方法吗?就像在同一个声明中一样?

感谢。

2 个答案:

答案 0 :(得分:1)

db.collection.update_one({"id"   : 1},
                         {"$inc" : {"A" : 5}})

参考:PyMongo $inc having issues

答案 1 :(得分:1)

正如@John Zwinck所说 您可以使用$inc来增加值。您可以在findOneAndUpdate()中使用它来更新第一次出现refer this 或者,如果要更新多个值,也可以使用findAndModify() refer this。所以你的代码将是

db.collection.findOneAndUpdate({"id":1},{ $inc : {"A" : 5}})

refer this了解inc运算符的工作原理。