使用mongoengine成功的MongoDB操作返回什么值?
我正在尝试弄清楚,mongoengine在执行操作时返回的成功代码是什么。可能我理解错了,但根据我的测试,有时候返回1表示“操作成功”,而有时候返回0。我想知道这方面有没有什么规则。
在mongoengine的文档中,没有提到数据库操作的返回值。
我只是想在构建我的应用时,确保如果我运行:
result = MyDocumentClass.objects(id=document_id).update_one(**update_dict)
或者:
result = MyDocumentClass.objects(id=document_id).delete()
并且结果是1(或者0,哪个是成功的代码),那么这个操作肯定是成功的。
1 个回答
3
根据源代码,update()
这个函数会返回被更新的文档数量,而delete()
则不会返回任何东西(换句话说,它返回的是None
)。
我个人认为,判断操作是否成功最可靠的方法是看这个命令是否抛出了异常。举个例子:
try:
MyDocumentClass.objects(id=document_id).update_one(**update_dict)
result = 1
except mongoengine.errors.OperationError:
result = 0
# process exception (log, for example)
注意:为了让MongoEngine
在出错时能够抛出异常,而不是默默失败,你需要通过设置write_concern
参数来启用safe
模式,具体可以参考: