Php MongoDB更新:如何检查更新是否成功?

Php MongoDB更新:如何检查更新是否成功?,php,mongodb,Php,Mongodb,我正在使用pecl驱动程序在PHP中使用MongoDB。我的更新工作得很好,但我想在我的函数中建立一些错误检查 我尝试在一个非常简单的函数中使用lastError(): function system_db_update_object($query, $values, $database, $collection) { $connection = new Mongo(); $collection = $connection->$database->$collectio

我正在使用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)
}

如何知道更新是成功还是失败?

字段“n”是已更新的文档数,“UpdateExisting”表示是否有任何文档已更新。您应该能够检查这些字段以查看更新是否成功。

如何知道MongoDB更新会影响哪些行?

与所有写入操作一样,MongoDB中的
getLastError
命令可以确认更新写入操作的结果,如下所述:

getLastError
命令返回当前连接上最后一次操作的错误状态。默认情况下,MongoDB不提供确认写入操作成功或失败的响应,客户端通常将getLastError与写入操作结合使用,以确保写入成功


我不是这个意思。不管我在$values数组中输入了什么,不管密钥是否存在(如果不存在,只需将值/密钥对添加到文档中),上面的代码都会愉快地更新数据库。重新阅读php.net文档时,我遇到了“safe”选项,并将其添加到上面的代码中,因此它现在看起来是这样的:$collection->update($query,array('$set'=>$values),array(“safe”=>true));但每次我故意进行垃圾更新时,仍然会得到相同的结果(NULL、true、1、1)。