首先,我使用findandmodify()方法在DB中找到一个文档并将值更新为1。然后我用文档做某事。之后,我想用对象id将文档的状态更新为2,我使用的方法是update()。
但是,在执行此类操作后,状态值不会更改为2.以下是我的代码的简要版本:
try:
print 'update...'
db.Tuser.update({'_id':obj_id}, # obj_id is a bson object, it's the object id of the document
{'$set':{'state': 2}})
print 'update done'
except Exception as e:
print 'update failed: %s' % str(e)
输出结果为:
更新...
更新完成
顺便说一句,当我在8台PC上运行时会发生这种情况,只有2台可以成功更新。当我单独运行时,它运作良好。
答案 0 :(得分:1)
尝试一些基本的调试步骤 - 这会返回任何内容吗?
db.Tuser.find({'_id':obj_id},
{'$set':{'state': 2}})
obj_id是字符串还是bson对象?
type(obj_id)
如果它是一个字符串,您需要将其转换为bson对象
import bson
obj_id = bson.ObjectId(obj_id)