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