MongoDB的getPrevError()函数
MongoDB提供了getPrevError()函数来获取由于最近一次写入操作而引起的上次错误(官方文档)。
语法:
db.getPrevError()
返回结果:
返回一个文档,其中包含关于上次错误的信息。
该文档有以下字段:
- err:一个字符串,如果上一次操作没有出错,则为空字符串。否则为错误信息。
- n:上一次影响的文档数 (仅适用于写操作; 默认值为0)
- ok:如果上一次操作没有出错,则为1。否则为0。
- wtimeout:一个布尔型来指示上一次写操作是否超时。
实例1:通过getPrevError()获取上一个错误信息
假设在执行一次insert操作失败后,再执行getPrevError()查看上一次错误信息。
执行如下insert语句:
> db.mycol.insert({“title”:”MongoDB 教程”,”description”:”mongodb 教程”})
WriteResult({ “nInserted” : 1 })
> db.mycol.insert({“title”})
此时发现有一个参数不符合类型规则时,insert操作失败。接着执行getPrevError():
> db.runCommand({"getPrevError":1})
{ “waitedMS” : 0, “error” : { “code” : 9, “errmsg” : “insertDocument :: caused by :: 6.0 is not an object” }, “hadError” : true, “ok” : 0 }
可以看到,error字段的值为错误信息字符串。
实例2:检查是否存在上个错误
假设想在执行某个处理逻辑时,检查是否存在上个写入操作出现的错误。
可以如下执行操作:
> var prevError = db.runCommand({getPrevError:1});
> if (prevError.err) {
print (“上一次操作出错了,错误信息:”+prevError.err);
} else {
print (“上一次操作成功”);
}
可以看到,该段代码能通过getPrevError()函数,获取上个写入操作的错误状态,并进行下一步业务处理。