MongoDB中使用$pullAll移除purchasedUsers数组对象失败求助
问题分析与解决
你的purchasedUsers数组结构如下:
当前使用的代码:
await Benefit.findByIdAndUpdate( req.params.benefitId, { $pullAll: { purchasedUsers: data.removedUsers } }, { new: true } );
移除操作不生效的原因是:$pullAll要求数组元素与传入的元素完全匹配,但purchasedUsers里是包含userId属性的对象,而data.removedUsers是纯userId字符串数组,两者无法匹配。
正确写法
使用$pull操作符结合$in来匹配需要移除的对象:
await Benefit.findByIdAndUpdate( req.params.benefitId, { $pull: { purchasedUsers: { userId: { $in: data.removedUsers } } } }, { new: true } );
这段代码会遍历purchasedUsers数组,移除所有userId属性存在于data.removedUsers数组中的对象,完全满足需求。
内容的提问来源于stack exchange,提问作者Soumik Ahammed
相关产品推荐
相关产品推荐

