You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB中使用$pullAll移除purchasedUsers数组对象失败求助

问题分析与解决

你的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 01:05:24