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

MongoDB中如何移除数组里包含abc.com子串的元素?

MongoDB移除数组中包含指定子串的元素

永久更新文档(修改原集合)

要批量移除所有文档中users数组里包含"abc.com"的元素,使用updateMany搭配$pull操作符和正则表达式:

db.collection.updateMany(
  {}, // 匹配所有文档,如需指定过滤条件可替换此对象
  {
    $pull: {
      users: /abc\.com/ // 正则匹配包含"abc.com"的字符串
    }
  }
)

执行后,集合内的文档会直接变为你期望的结果。

查询时临时过滤(不修改原数据)

如果仅需在查询结果中返回过滤后的数组,不改动原集合数据,可使用聚合管道的$filter操作符:

db.collection.aggregate([
  {
    $project: {
      users: {
        $filter: {
          input: "$users",
          cond: { 
            $not: { 
              $regexMatch: { input: "$$this", regex: /abc\.com/ } 
            }
          }
        }
      }
    }
  }
])

关键说明

  • 正则里的\.必须转义,否则.会匹配任意字符,无法精准匹配"abc.com"子串。
  • $pull会彻底移除数组中所有符合条件的元素,适合需要永久修改数据的场景。
  • $filter仅在查询阶段处理数组,原集合数据不受影响,适合临时查看结果的场景。

内容的提问来源于stack exchange,提问作者user14361300

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:31:42