【问题标题】:Deleting a sub document from a document in collection从集合中的文档中删除子文档
【发布时间】:2018-02-22 05:39:42
【问题描述】:

我正在尝试从集合中删除子文档。我试过下面的代码行

         public function deleteContactDetailsForItsSubDocument()
{
        $this->collection->updateOne(
                            array('_id' => new MongoDB\BSON\ObjectID($this->id)),
                               array('$pull' => 
                                       array('ContactDetails.ContactTypeId' => $this->ContactTypeId)
                                     ));
}                

它抛出错误消息“未捕获的异常 'MongoDB\Driver\Exception\BulkWriteException' 并显示消息'无法使用 (ContactDetails.ContactTypeId) 的部分 (ContactTypeId) 遍历元素”

集合中的文档是这样的

      {
      "_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" 
     } 
   ] 
   ...

【问题讨论】:

标签: mongodb mongodb-query mongodb-php php-mongodb


【解决方案1】:

试试这个:

$this->collection->updateOne(
                   array('_id' => new MongoDB\BSON\ObjectID($this->id)),
                   array('$pull' => 
                       array('ContactDetails' =>
                           array('ContactTypeId' => $this->ContactTypeId)
                       )
                   )
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2018-07-20
    • 2020-02-17
    • 2018-11-01
    相关资源
    最近更新 更多