2013-02-26 2 views
-1

Привет У меня есть массив клиентов на объекте изображения, как это:Update суб объект на родительский объект в одном запросе

{ 
     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) 
); 

Найдет все клиенты с этим «$ document-> ид» и обновления каждый клиент (. $) массива «клиенты».

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

Что такое клиент поле? у вас нет этого.

Чтобы обновить список объектов, вы должны заменить весь весь список. Или нажмите новую запись и потяните старую. Потому что, когда вы пытаетесь найти документы по clients.id критериев, у вас есть список документов, а не клиентов только список. Кроме того, вы можете написать js-функцию для обновлений, как вам нужно. И храните его в монгоббе.