首页 > 解决方案 > 删除 mongoDB 嵌套数组中的特定对象

问题描述

我有一个名为 myCollection 的 mongoDB 集合,在 myCollection 内部有不同的文档,其结构如下:

{
    "id": 1234,
    "posts": [
       [
          {
             "id": "0.0",
             "name": "john",
             "message": "hello"
          },
          {
             "id": "0.1",
             "name": "jane",
             "message": "good morning"
          },
          {
             "id": "0.2",
             "name": "josh",
             "message": "good evening"
          }
       ],
       [
          {
             "id": "1.0",
             "name": "mark",
             "message": "good lunch"
          }
       ],
       [
          {
             "id": "2.0",
             "name": "john",
             "message": "bye bye"
          },
          {
             "id": "2.1",
             "name": "mark",
             "message": "hi"
          }
       ]
    ]
}

谁能告诉我如何删除嵌套“帖子”数组中的特定对象?例如,围绕 id=1234 的文档的这个特定对象启动查询:

      {
         "id": "0.1",
         "name": "jane",
         "message": "good morning"
      }

我希望 id=1234 的对象的结构变成这样:

{
    "id": 1234,
    "posts": [
       [
          {
             "id": "0.0",
             "name": "john",
             "message": "hello"
          },
          {
             "id": "0.2",
             "name": "josh",
             "message": "good evening"
          }
       ],
       [
          {
             "id": "1.0",
             "name": "mark",
             "message": "good lunch"
          }
       ],
       [
          {
             "id": "2.0",
             "name": "john",
             "message": "bye bye"
          },
          {
             "id": "2.1",
             "name": "mark",
             "message": "hi"
          }
       ]
    ]
}

标签: arraysmongodb

解决方案


您需要提取文档并触发更新。

  db.myCollection.update(
  { id : 1234 },
  {
    $pull : {"posts.0" :   {
         "id": "0.1",
         "name": "jane",
         "message": "good morning"
      }
   } 
 })

推荐阅读