2013-12-17 2 views
0

this question 다음은 upsert: falsemulti: true 필드가 작동하도록 설정해야합니다.PHP를 사용하여 MongoDB 컬렉션에있는 모든 문서의 필드 이름 바꾸기

내가 PHP에서이 코드를하려고 할 때 그러나, 나는이 문제가

:

$conn = new Mongo("mongodb://foo:[email protected]:27017"); 
$db = $conn->selectDB("someDB"); 

$data = array('$rename' => array(
    'nmae' => 'name' 
)); 
$db->command(array(
    'findAndModify' => 'foo', 
    'update' => $data, 
    'upsert' => 'false', 
    'multi' => 'true' 
)); 

이 스크립트를 실행 한 후 nmae 오타 첫 번째 문서가 name로 변경됩니다; 나머지는 여전히 nmae라고합니다. upsertmulti 옵션없이 실행 한 것과 같습니다.

$data = array('$rename' => array(
    'nmae' => 'name' 
), 
'upsert' => 'false', 
'multi' => 'true' 
); 
$db->command(array(
    'findAndModify' => 'foo', 
    'update' => $data 
)); 

하지만 그 같은 일을 수행합니다

나는 또한이 시도.

이 방법을 얻으려면 어떤 방법이 있으십니까?

findAndModify 쿼리는 "멀티"옵션이 없습니다

답변

2
+0

이 덕분에,하지만 여전히 작동하지 않는 것 모든 문서는 MongoDB에서 실행될 때 해당 명령이 수행하는 방식과 동일합니다. 내가 가지고있는 것은'$ db-> someDB-> 업데이트 (array(), $ data, array ('$ multi'=> true, '$ upsert'=> false)); PHP-Mongo Driver에 구현되었습니다. –

+1

nvm. 문서를 자세히 읽지 않았습니다. 그것은'array ('multiple'=> true)'이어야합니다. –

관련 문제