更新 mongo db php 中的特定子文档
Updating a particular sub document in mongo db php
我在 mongo 数据库中有一个名为 EmployeeTbl 的集合,其文档类似于
{
"_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 MongoDB\Driver\BulkWrite(['ordered' => true]);
$subDocumentContactDetails = array(
"ContactDetails" =>
array(
"ContactType" => $this->ContactType,
"ContactTypeValue" => $this->ContactTypeValue
)
);
$this->collection->update(
array('_id' => new MongoDB\BSON\ObjectID($this->id), 'ContactDetails.ContactTypeId'=> $this->ContactTypeId),
array('$set' => $subDocumentContactDetails)
);
// $this->manager->executeBulkWrite($this->collection, $bulkbatch);
}
更改您的 $subDocumentContactDetails
变量,使其使用 $
positional operator 更新嵌入文档:
$subDocumentContactDetails = array(
"ContactDetails.$.ContactType" => $this->ContactType,
"ContactDetails.$.ContactTypeValue" => $this->ContactTypeValue
);
$this->collection->update(
array(
"_id" => new MongoDB\BSON\ObjectID($this->id),
"ContactDetails.ContactTypeId" => $this->ContactTypeId
),
array("$set" => $subDocumentContactDetails)
);
我在 mongo 数据库中有一个名为 EmployeeTbl 的集合,其文档类似于
{
"_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 MongoDB\Driver\BulkWrite(['ordered' => true]);
$subDocumentContactDetails = array(
"ContactDetails" =>
array(
"ContactType" => $this->ContactType,
"ContactTypeValue" => $this->ContactTypeValue
)
);
$this->collection->update(
array('_id' => new MongoDB\BSON\ObjectID($this->id), 'ContactDetails.ContactTypeId'=> $this->ContactTypeId),
array('$set' => $subDocumentContactDetails)
);
// $this->manager->executeBulkWrite($this->collection, $bulkbatch);
}
更改您的 $subDocumentContactDetails
变量,使其使用 $
positional operator 更新嵌入文档:
$subDocumentContactDetails = array(
"ContactDetails.$.ContactType" => $this->ContactType,
"ContactDetails.$.ContactTypeValue" => $this->ContactTypeValue
);
$this->collection->update(
array(
"_id" => new MongoDB\BSON\ObjectID($this->id),
"ContactDetails.ContactTypeId" => $this->ContactTypeId
),
array("$set" => $subDocumentContactDetails)
);