使用 ElemMatch 更新 MongoDb

我有一个文档结构如下的集合:

蒙戈游乐场

{

    "basicDetails": {

        "id": "1",

        "name": "xyz"

    },

    "tasks": [{

        "id": "10",

        "name": "task10",

        "subtasks": [{

            "id": "120",

            "name": "subTask120",

            "description": "ABC"

        }]

    }]

}

如您所见,每个文档都有 basicDetails 对象和任务数组。每个任务都包含它自己的一些属性和一个子任务数组。


我想将子任务的描述从 更新ABC为XYZ


where root level id is 1, task'id is 10 and  subTasks.id =120


我该怎么做?


我知道我可以通过以下方式找到正确的文档:


db.collection.find({

  "basicDetails.id": "1",

  "tasks": {

    "$elemMatch": {

      "id": "10",

      "subtasks": {

        "$elemMatch": {

          "id": "120"

        }

      }

    }

  }

})

但我该如何更新呢?我只想更新单个子任务的一个属性,即描述


素胚勾勒不出你
浏览 124回答 1
1回答

ABOUTYOU

要更新嵌套数组,过滤位置运算符 $ [identifier]arrayFilters标识与更新操作条件匹配的数组元素。$set在嵌套数组中尝试以下查询:db.collection.updateOne({  "basicDetails.id": "1"},{  "$set": {    "tasks.$[tasks].subtasks.$[subtasks].description": "XYZ"  }},{  "arrayFilters": [    {      "tasks.id": "10"    },    {      "subtasks.id": "120"    }  ]})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript