最近一直在学习聚合通道,感觉虽方便但使用很复杂,有点不得门道
比如我现在有个表,结构分别为:
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})
})