2013-02-26 88 views
-1

你好,我有客戶的圖像對象上的數組,像這樣:更新在一個查詢父對象的子對象

{ 
     id: 1, 
     path: "2013-02/12", 
     clients: 
     [ 
      { 
        id: 321, 
        alias: "Test: audienceDev", 
      } 
     ], 
}, 

的客戶對象是在其他地方更新,我需要更新的客戶對象在這個圖像對象上。

我曾嘗試:

  $this->mongoDB->Image->update(
       array('clients.id' => (int) $document->id), 
       array('$set' => array('client' => $document)), 
       array('multiple' => true) 
      ); 

  $this->mongoDB->Image->update(
       array('clients[].id' => (int) $document->id), 
       array('$set' => array('client' => $document)), 
       array('multiple' => true) 
      ); 

既不更新圖像對象的客戶對象。

有什麼建議嗎?

回答

1

據我所知,您的客戶端的數組,所以更新每一個客戶對象,你應該這樣做:

$this->mongoDB->Image->update(
    array('clients.id' => (int) $document->id), 
    array('$set' => array('clients.$' => $document)), 
    array('multiple' => true) 
); 

這會發現所有的客戶與「$文檔 - > ID」和更新'clients'數組的每個客戶端(。$)。

0
array('$set' => array('client' => $document)) 

什麼是客戶場?你沒有它。

要更新對象列表,您必須替換整個列表。或者推新的條目並拉動舊的。因爲當您試圖通過clients.id標準查找文檔時,您獲得了文檔列表,而不是客戶端列表。 此外,你可以寫你需要的更新js函數。並將它存儲在mongodb中。

相關問題