Python 更新不使用pymongo
首先,我找到一个文档,并使用findandmodify()方法将数据库中的值状态更新为1。然后我使用文档做一些事情。之后,我想用对象id将文档的状态更新为2,我使用的方法是update()。Python 更新不使用pymongo,python,mongodb,pymongo,Python,Mongodb,Pymongo,首先,我找到一个文档,并使用findandmodify()方法将数据库中的值状态更新为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 do
但是,在这样的操作之后,状态值没有变为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台电脑上运行它时,就会发生这种情况,其中只有2台电脑可以成功更新。当我单独运行它时,它工作得很好。尝试一些基本的调试步骤-这会返回什么
db.Tuser.find({'_id':obj_id},
{'$set':{'state': 2}})
obj_id是字符串还是bson对象
type(obj_id)
如果是字符串,则需要将其转换为bson对象
import bson
obj_id = bson.ObjectId(obj_id)
我尝试使用变量来保持更新的返回,并使用日志模块将变量打印为日志。但似乎没有日志。顺便说一下,我在4台电脑上运行了这些代码,其中一台可以成功更新。但是find()无法执行更新操作。obj_id是一个bson对象。我问你
find
是否返回任何东西。最可能发生的情况是更新找不到要更新的正确文档,您可以通过查看find
是否返回任何内容来验证这一点。如果您可以共享有关obj_id(例如,它的类型)的更多信息,则调试会更容易。