为了账号安全,请及时绑定邮箱和手机立即绑定

使用 ElemMatch 更新 MongoDb

使用 ElemMatch 更新 MongoDb

素胚勾勒不出你 2023-07-29 16:44:06
我有一个文档结构如下的集合:蒙戈游乐场{    "basicDetails": {        "id": "1",        "name": "xyz"    },    "tasks": [{        "id": "10",        "name": "task10",        "subtasks": [{            "id": "120",            "name": "subTask120",            "description": "ABC"        }]    }]}如您所见,每个文档都有 basicDetails 对象和任务数组。每个任务都包含它自己的一些属性和一个子任务数组。我想将子任务的描述从 更新ABC为XYZwhere 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"        }      }    }  }})但我该如何更新呢?我只想更新单个子任务的一个属性,即描述
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

要更新嵌套数组,过滤位置运算符 $ [identifier]arrayFilters标识与更新操作条件匹配的数组元素。

$set在嵌套数组中尝试以下查询:

db.collection.updateOne({

  "basicDetails.id": "1"

},

{

  "$set": {

    "tasks.$[tasks].subtasks.$[subtasks].description": "XYZ"

  }

},

{

  "arrayFilters": [

    {

      "tasks.id": "10"

    },

    {

      "subtasks.id": "120"

    }

  ]

})


查看完整回答
反对 回复 2023-07-29
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信