我在mongo db中有一个名为lospeetbl的集合,
{
"_id": ObjectId("5a8d47d8d2ccda11fc004d91"),
"EmployeeNumber": "9883456787",
"FirstName": "Sana",
...
"ContactDetails": [
{
"ContactTypeId": "04596c6f-82e6-8f00-e3a9-1f3199894284",
"ContactType": "Phone",
"ContactTypeValue": "99456789756"
},
{
"ContactTypeId": "71d0152c-293f-4c6f-2360-bbdfe368eacb",
"ContactType": "Phone",
"ContactTypeValue": "9894567890"
}
]
}
我正在尝试更新ContactDeTails中的子文档,并且我写了以下代码。它没有更新现有的。它没有更新,而是添加了新的子文档。请帮我!
public function updateContactDetailsForItsSubDocument()
{
// $bulkbatch = new MongoDBDriverBulkWrite(['ordered' => true]);
$subDocumentContactDetails = array(
"ContactDetails" =>
array(
"ContactType" => $this->ContactType,
"ContactTypeValue" => $this->ContactTypeValue
)
);
$this->collection->update(
array('_id' => new MongoDBBSONObjectID($this->id), 'ContactDetails.ContactTypeId'=> $this->ContactTypeId),
array('$set' => $subDocumentContactDetails)
);
// $this->manager->executeBulkWrite($this->collection, $bulkbatch);
}
更改您的$subDocumentContactDetails
变量,以便使用 $
位置操作员来更新嵌入式文档:
$subDocumentContactDetails = array(
"ContactDetails.$.ContactType" => $this->ContactType,
"ContactDetails.$.ContactTypeValue" => $this->ContactTypeValue
);
$this->collection->update(
array(
"_id" => new MongoDBBSONObjectID($this->id),
"ContactDetails.ContactTypeId" => $this->ContactTypeId
),
array("$set" => $subDocumentContactDetails)
);