Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更新不使用pymongo_Python_Mongodb_Pymongo - Fatal编程技术网

Python 更新不使用pymongo

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

首先,我找到一个文档,并使用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 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(例如,它的类型)的更多信息,则调试会更容易。