您好我在图像对象上有一组客户端,如下所示:
{
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)
);
不更新图像对象上的客户端对象。
有什么建议吗?
答案 0 :(得分:1)
我知道你有一组客户端,所以要更新每个客户端对象,你应该这样做:
$this->mongoDB->Image->update(
array('clients.id' => (int) $document->id),
array('$set' => array('clients.$' => $document)),
array('multiple' => true)
);
这将找到具有'$ document-> id'的所有客户,并更新'clients'数组的每个客户端(。$)。
答案 1 :(得分:0)
array('$set' => array('client' => $document))
什么是客户端字段?你还没有。
要更新对象列表,您必须替换整个列表。或推新进入并拉旧。因为当您尝试通过 clients.id 条件查找文档时,您获得的是文档列表,而不是 clients 列表。 此外,您可以根据需要为更新编写js函数。并将其存储在mongodb中。