【发布时间】:2020-05-08 20:04:59
【问题描述】:
我正在尝试更新对象数组中的字段,其中嵌套数组中的字段等于一个值。
我的目标是给picture字段设置一个新的url,其中valueList中的value字段是oldRed
产品架构:
{
variations: [{
id: 1,
picture: 'https://example.picture.com',
valueList: [{
name: 'color',
value: 'oldRed'
}, {
name: 'size',
value: 'M'
}]
}, {
id: 2,
picture: 'https://example.picture.com',
valueList: [{
name: 'color',
value: 'black'
}, {
name: 'size',
value: 'M'
}]
}]
}
我得到的最接近的是感谢answer,我在其中更新了所有包含 :'oldRed' 的嵌套数组字段。但我的最终目标是根据嵌套数组字段更新其他字段picture。
db.Product.findOneAndUpdate({
_id: '123'
}, {
$set: {
'variations.$[].valueList.$[nameField].value': 'newRed'
}
}, {
arrayFilters: [{
'nameField.value': 'oldRed'
}],
new: true
}
});
【问题讨论】:
标签: arrays mongodb mongoose mongodb-query