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})
})
回复
1个回答

test
2024-07-04
A.updateOne(
{ id: 2, "array.id": 22 },
{ $set: { "array.$.name": "ee" } }
)
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容