Я работаю с 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) }
Как узнать, прошло или не удалось выполнить обновление?
поле «n» – это количество документов, которые были обновлены, а «updatedExisting» указывает, был ли вообще обновлен какой-либо документ. вы должны проверить эти поля, чтобы убедиться, что обновление выполнено или нет.
Откуда вы знаете, на какие строки влияет обновление MongoDB?
Как и во всех операциях записи, команда getLastError
в MongoDB может подтвердить результат операции записи обновления, описанной здесь:
http://docs.mongodb.org/manual/applications/update/
Команда getLastError
возвращает статус ошибки последней операции в текущем соединении. По умолчанию MongoDB не дает ответа, чтобы подтвердить успех или неудачу операции записи, клиенты обычно используют getLastError в сочетании с операциями записи, чтобы гарантировать, что запись выполнена успешно.
http://docs.mongodb.org/manual/reference/command/getLastError/#getLastError