我正在尝试制定规则和/或考虑 mongoengine 返回什么作为操作的成功代码。我可能是错的,但根据我的测试,有时“操作成功执行”返回 1,有时返回 0。这有什么规则吗?
在 mongoengine 文档中没有提及有关数据库操作的返回值。
我只想构建我的应用程序,并确定如果我运行:
result = MyDocumentClass.objects(id=document_id).update_one(**update_dict)
或者:
result = MyDocumentClass.objects(id=document_id).delete()
结果=1(或0,以SUCCESS代码为准),该操作肯定成功了。
最佳答案
根据source code , 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
模式论证,另见:
关于python - 使用 mongoengine 成功操作 MongoDB 的返回值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24868654/