2012-02-25 36 views
1

假設我們有這樣蒙戈DB:一個字段更改爲陣列

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

一個文檔,我們改變了主意,想要把更多的東西,以數據 - >像這樣它看起來像;

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

所有的原子操作符,如$推,$ pushAll和$ addToSet作品只是當數據 - >像已經是一個數組。

我正在使用php-driver。在這個例子中,沒有必要在開始時將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 2012-02-25 12:33:58