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

如何通过MongoDB聚合修改字段字符串的指定子域名部分?

使用MongoDB聚合统一替换four字段的子域名

要把集合里four字段的不同子域名统一换成https://cdn56-img.good-cdn.com/,可以用聚合管道的字符串处理操作来实现,具体步骤如下:

方法一:生成修改后的结果(可选写入新集合)

执行以下聚合命令,替换yourCollectionName为你的集合名:

db.yourCollectionName.aggregate([
  {
    $addFields: {
      four: {
        $concat: [
          "https://cdn56-img.good-cdn.com/",
          {
            $arrayElemAt: [
              { $split: ["$four", ".good-cdn.com/"] },
              1
            ]
          }
        ]
      }
    }
  },
  // 可选:如果要把结果存到新集合,取消下面注释并替换集合名
  // {
  //   $out: "yourNewCollectionName"
  // }
])

各阶段说明:

  • $addFields:直接覆盖原four字段,生成新的URL
  • $split:把原URL按.good-cdn.com/拆分,得到包含域名前缀和路径的数组
  • $arrayElemAt:取出数组里的路径部分(索引为1的元素)
  • $concat:把目标域名和路径拼接成最终的URL
  • $out(可选):将修改后的所有文档写入指定的新集合

方法二:直接更新原集合文档

如果需要直接修改原集合里的文档,用$merge阶段替代$out:

db.yourCollectionName.aggregate([
  {
    $addFields: {
      four: {
        $concat: [
          "https://cdn56-img.good-cdn.com/",
          {
            $arrayElemAt: [
              { $split: ["$four", ".good-cdn.com/"] },
              1
            ]
          }
        ]
      }
    }
  },
  {
    $merge: {
      into: "yourCollectionName",
      on: "_id",
      whenMatched: "replace"
    }
  }
])

$merge阶段说明:

  • into:指定要更新的目标集合(即原集合)
  • on:用_id作为匹配条件,保证更新对应文档
  • whenMatched: "replace":匹配到文档时,用聚合生成的新文档替换原文档

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:33:12