MongoDB更新:如何检查更新是成功还是失败?

时间:2010-06-02 23:42:08

标签: php mongodb

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

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

2 个答案:

答案 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