2012-02-25 6 views
1

에 필드를 변경은 우리가이몽고 DB는 : 배열

{ 
    "_id" : "1234", 
    "Data" : { 
     "Name" : "Pythagoras", 
     "Like" : "Math" 
} 

같은 문서가 우리가 마음에 걸쳐 변화하고 그래서 같이 보이는처럼> 데이터 - 더 많은 일을 밀어하고 싶은 말은 수 있습니다; 이미 배열처럼 $ 푸시, $ pushAll 및 $ addToSet 같은

{ 
    "_id" : "1234", 
    "Data" : { 
     "Name" : "Pythagoras", 
     "Like" : ["Math", "Science"] 
} 

모든 원자 사업자는시 데이터 -> 작동합니다.

저는 PHP 드라이버를 사용하고 있습니다. 이 예제에서는 Data-> Like를 처음에는 배열로 설정하지 않지만 내 코드 에서처럼 작동하지 않습니다. (

나쁜 영어로 유감스럽게 생각합니다.) 감사!

답변

1

모든 문서를 반복하고 값을 배열로 변경해야합니다. 예를 들어, 다음과 같이 할 수 있습니다 :

 
$m = new Mongo(); 
$c = $m->yourdbname->yourcollectionname; 

foreach ($c->find() as $r) 
{ 
    if (!is_array($r['Data']['Like'])) 
    { 
     $c->update(array('_id' => $r['_id']), array('$set' => array('data.like' => array($r['data']['like'])))); 
    } 
} 
+0

감사합니다. 나는 모든 문서를 가지고 싶지는 않지만 원하는대로 수정할 수 있다고 생각합니다. 방금 데이터를 추가 한 연산자가 필요했습니다. ( – Mattias