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

两者都不更新图像对象上的客户端对象。

有什么建议么?

4

2 回答 2

1

我知道您有一组客户端,因此要更新每个客户端对象,您应该这样做:

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

This will find all the clients with that '$document->id' and updates every client (.$) of the 'clients' array.

于 2013-02-27T14:39:01.770 回答
0
array('$set' => array('client' => $document))

什么是客户领域?你没有它。

要更新对象列表,您必须替换整个列表。或者推新条目并拉旧条目。因为当您尝试按clients.id标准查找文档时,您会得到文档列表,而不仅仅是客户列表。此外,您可以编写一个 js 函数来进行所需的更新。并将其存储在mongodb中。

于 2013-02-26T18:08:38.317 回答