2012-09-18 5 views
1

나는 잠시 동안 mongodb를 가지고 놀았습니다. 나는 존재하지 않는 값이나 키를 제거하려고 할 때 오류가 발생하지 않는다는 개념을 모르겠습니다. 같은 DB를 사용하는 방법mongodb 제거가 부울을 반환하지 않습니다.

 $host = '10.311.33.2'; 
     $user = 'admin'; $password = 'admin'; 
     tmpHost ="mongodb://$user:[email protected]$host"; 
     $m = new Mongo("$tmpHost"); 
     $db = $m->selectDB("common"); 
     $collection = new MongoCollection($db,"list"); 
     $result = array('name'=>'ali'); 
     $collection->insert($result); 
     if($collection->remove($result)){ 
     echo "Remove";} 
     else{ 
     echo "Not removed";} 
     // Should display Not removed, since its not existing. but it displays Remove :S 
     if($collection->remove($result)){ 
     echo "Remove";} 
     else{ 
     echo "Not removed";} 

, 당신은 MongoCollection이 :: 옵션 (옵션없이 그것을 호출)에서 안전 플래그없이 제거 호출

답변

2

. 그것은 명령이 불행과 잊지 방식으로 행동한다는 것을 의미합니다. 이는 데이터베이스로 보내지고 응답을 기다리지 않고 프로그램 실행이 계속됩니다.

당신은 그런 식으로 전화 할 때 :

$collection->remove($result, array("safe" => true)) 

반환 값은 쿼리가 어떻게 작동하는지에 대한 정보가 포함 된 배열이됩니다. 이 배열의 필드 "n"은 영향을받는 객체의 수를 포함합니다. 제거 명령이 아무 것도하지 않으면 0이어야합니다. 전에 작업 한 대부분의 데이터베이스은 오류로 영향을주지 않는 삭제 쿼리를 처리합니다.

관련 문제