Обновление MongoDB: как проверить, успешно ли происходит обновление или нет? - PullRequest
8 голосов
/ 03 июня 2010

Я работаю с MongoDB в PHP, используя драйвер pecl. Мои обновления работают отлично, но я хотел бы встроить некоторые проверки ошибок в свои функции.

Я пытался использовать 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 ]

4 голосов
/ 03 июня 2010

поле «n» - это количество документов, которые были обновлены, а «updatedExisting» сообщает, был ли обновлен какой-либо документ. Вы должны быть в состоянии проверить эти поля, чтобы увидеть, было ли обновление успешным или нет.

3 голосов
/ 22 января 2013

Как узнать, на какие строки влияет обновление MongoDB?

Как и во всех операциях записи, команда getLastError в MongoDB может подтвердить результат операции записи обновления, описанной здесь:

http://docs.mongodb.org/manual/applications/update/

Команда getLastError возвращает состояние ошибки последней операции в текущем соединении. По умолчанию MongoDB не предоставляет ответ для подтверждения успеха или неудачи операции записи, клиенты обычно используют getLastError в сочетании с операциями записи, чтобы обеспечить успешное выполнение записи.

http://docs.mongodb.org/manual/reference/command/getLastError/#getLastError

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...