mongodb 如何修改查询目标下子数组项?

最近一直在学习聚合通道,感觉虽方便但使用很复杂,有点不得门道

比如我现在有个表,结构分别为:

A = [{
    id: 1,
    array: [{id: 11, name: 'aa'}, {id: 12, name: 'ab'}]
}, {
    id: 2,
    array: [{id: 21, name: 'ba'}, {id: 22, name: 'bb'}]
}, {
    id: 3,
    array: [{id: 31, name: 'ca'}, {id: 32, name: 'cb'}]
}]

我想更新 id: 2 对象的 array 中 id: 22 项的 name
是否能通过聚合实现更新呢?

尝试写了几次都未能成功,我现在能写水平也就如下:

A.find({id: 2}).then(data => {
    data.array.forEach(item => {
        if (item.id == 22) {
            item.name = 'ee'
        }
    })
    A.updateOne({id: 2}, $set: {array: data.array})
})
阅读 2.2k
1 个回答
A.updateOne(
  { id: 2, "array.id": 22 },
  { $set: { "array.$.name": "ee" } }
)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题