Mongodb 在一个查询中更新父对象上的子对象

Mongodb 在一个查询中更新父对象上的子对象,mongodb,Mongodb,您好,我在图像对象上有一组客户端,如下所示: { id: 1, path: "2013-02/12", clients: [ { id: 321, alias: "Test: audienceDev", } ], }, 客户端对象在别处更新,我需要更新此图像对象上的客户端对象 我试过:

您好,我在图像对象上有一组客户端,如下所示:

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

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

有什么建议吗

array('$set' => array('client' => $document))
什么是客户机字段?你还没有

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

我知道您有一个客户机数组,所以要更新每个客户机对象,您应该执行以下操作:

$this->mongoDB->Image->update(
  array('clients.id' => (int) $document->id),
  array('$set' => array('clients.$' => $document)),
  array('multiple' => true)
);
这将找到具有“$document->id”的所有客户端,并更新“clients”数组的每个客户端(.$)

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