更新猫鼬子文档数组中的所有项目

时间:2020-02-28 00:46:35

标签: node.js mongoose

我正在尝试更新一个文档的许多子文档。因此,如果这是模式:

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 }
);

但是我遇到一个错误。如何使用猫鼬更新数组中的所有项目?

1 个答案:

答案 0 :(得分:1)

您可以使用$[]运算符来执行此操作。示例:

await User.findOneAndUpdate(
  {
    _id: userId,
    'user.addresses': { $exists: true, $not: { $size: 0 } }
  }, 
  { 'user.addresses.$[].isActive': true }
);