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

作者站长头像
站长
· 阅读数 30

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

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

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})
})
回复
1个回答
avatar
test
2024-07-04
A.updateOne(
  { id: 2, "array.id": 22 },
  { $set: { "array.$.name": "ee" } }
)
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容