2013-07-24 40 views
0

我試圖更新嵌套數組上的數據。我能夠使用位置運算符來實現,但是我遇到的問題是我無法獲取多個文檔進行更新。我的文檔結構如下:如何使用mongodp和php更新多個嵌套數組文件?

'items' => array (
    0 => array ( 
     'name' => 'soap', 
     'qty' => 5, 
     'price' => 2.5, 
    ), 
    1 => 
     array (
     'name' => 'soap', 
     'qty' => 5, 
     'price' => 2.5, 
    ), 
); 

我想更新'name'=> soap的所有名稱字段。我寫了下面的代碼:

$newdata = array('$set'=> array('items.$.name'=> "paste")); 

$collection->update(
    array('items.name' => "soap"), 
    $newdata, 
    array("multiple"=>true) 
); 

上面的代碼工作過的第一個條目,但它不是更新其它的數據條目,即使在多個選項設置爲true。

任何人都可以給我一個工作解決方案,以便如何更新所有具有項目名稱的數據作爲肥皂? Thankz提前。

回答

0

選項multiple => true對多個文檔有影響。你想要的是用一個更新語句更新多個子文檔。而你不能這樣做。如果這是您的應用程序的要求,那麼您需要更改模式以使您的items陣列中的每個元素成爲單獨的文檔。

+0

嘿德里克,感謝您的答覆。我明白你的觀點。因爲mongo是一個noob,所以我希望你不會介意回答,因爲DB是模式少的,如果我需要爲所有文檔創建單獨的文檔,如何在文檔(表格)之間建立關係?我需要在編碼方面做到這一點嗎? – fastLearner

+0

也許,我想你只是通過顯示「items」字段來顯示文檔結構的一部分? – Derick

+0

是的,實際上考慮到這是一個購物應用程序的表,有像客戶ID和其他字段。我應該使用手動參考技術並建立關係嗎?這會更明智嗎? – fastLearner