我正在尝试更新一个文档的许多子文档。因此,如果这是模式:
user: {
addresses: [
{
location: String
isActive: Boolean
_id: false
}
]
}
我想更新isActive
子文档中的所有addresses
字段。所以我尝试了这个:
await User.findOneAndUpdate({
_id: userId,
'user.addresses': { $exists: true, $not: { $size: 0 } }
}, { 'user.addresses.isActive': true }
);
但是我遇到一个错误。如何使用猫鼬更新数组中的所有项目?
答案 0 :(得分:1)
您可以使用$[]运算符来执行此操作。示例:
await User.findOneAndUpdate(
{
_id: userId,
'user.addresses': { $exists: true, $not: { $size: 0 } }
},
{ 'user.addresses.$[].isActive': true }
);