2010-06-02 3 views
7

PHP에서 pecl 드라이버를 사용하여 MongoDB와 협력하고 있습니다. 내 업데이트는 훌륭하게 작동하지만 일부 기능을 확인하기 위해 오류를 작성하고 싶습니다.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) 
} 

업데이트가 성공했는지 또는 실패했는지 어떻게 알 수 있습니까?

답변

3

"n"필드는 업데이트 된 문서 수이고 "updatedExisting"은 문서가 전혀 업데이트되었는지 여부를 알려줍니다. 업데이트가 성공했는지 여부를 확인하기 위해 해당 필드를 확인할 수 있어야합니다.

+1

그건 내가 의미하는 바가 아닙니다. 위의 코드는 키가 있는지 여부에 상관없이 $ values ​​배열에 넣은 것에 관계없이 데이터베이스를 업데이트합니다 (단순히 값/키 쌍을 문서에 추가하지 않으면). php.net 설명서 다시 읽기 "안전한"옵션을 찾아 위의 코드에 추가하여 다음과 같이 표시했습니다. $ collection-> update ($ query, array ('$ set'= > $ values), array ("safe"=> true)); 하지만 의도적으로 가비지 업데이트를 수행 할 때마다 여전히 동일한 결과 (NULL, true, 1, 1)가 표시됩니다. – zmg

3

MongoDB 업데이트의 영향을받는 행을 어떻게 알 수 있습니까? 모두와 마찬가지로

가 쓰기 작업, MongoDB의에서 getLastError 명령이 업데이트의 쓰기 작업의 결과를 확인할 수 있습니다, 여기에 설명 :

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

getLastError 명령의 마지막 작업의 오류 상태를 반환 현재 연결. 기본적으로 MongoDB는 쓰기 작업의 성공 또는 실패를 확인하는 응답을 제공하지 않으므로 클라이언트는 일반적으로 쓰기 작업과 함께 getLastError를 사용하여 쓰기가 성공했는지 확인합니다.

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

관련 문제