我正在使用pecl驱动程序在PHP中使用MongoDB。我的更新工作得很好,但我想在我的函数中构建一些错误检查。
我尝试在一个非常简单的函数中使用lastError():
function system_db_update_object($query, $values, $database, $collection) {
$connection = new Mongo();
$collection = $connection->$database->$collection;
$connection->$database->resetError(); //Added for debugging
$collection->update(
$query,
array('$set' => $values));
//$errorArray = $connection->$database->lastError();
var_dump($connection->$database->lastError());exit; // Var dump and /Exit/
}
但无论我尝试更新什么(无论是否存在),我都会得到以下相同的基本结果:
array(4) {
["err"]=>
NULL
["updatedExisting"]=>
bool(true)
["n"]=>
float(1)
["ok"]=>
float(1)
}
如何知道更新是成功还是失败?
答案 0 :(得分:3)
“n”字段是已更新的文档数,“updatedExisting”表示是否有任何文档更新。您应该能够检查这些字段以查看更新是否成功。
答案 1 :(得分:3)
您如何知道MongoDB更新会影响哪些行?
与所有写操作一样,MongoDB中的getLastError
命令可以确认更新写操作的结果,如下所述:
http://docs.mongodb.org/manual/applications/update/
getLastError
命令返回当前连接上最后一次操作的错误状态。默认情况下,MongoDB不提供确认写入操作成功或失败的响应,客户端通常将getLastError与写入操作结合使用以确保写入成功。
http://docs.mongodb.org/manual/reference/command/getLastError/#getLastError