使用mongoengine成功的MongoDB操作返回什么值?

1 投票
1 回答
1970 浏览
提问于 2025-04-18 14:07

我正在尝试弄清楚,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模式,具体可以参考:

撰写回答