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

如何用MongoDB $addFields拆分驼峰式及非标准分隔字段

解决方案:MongoDB 4.4.1 实现字段分隔符替换(驼峰/点/下划线转空格)

可以实现你的需求,利用MongoDB 4.4支持的$regexFindAll和$reduce组合处理驼峰式,再配合$replaceAll处理其他分隔符,全程通过$addFields完成。以下是完整的聚合管道:

db.collection.aggregate([
  // 处理驼峰式:小写字母后接大写字母的位置插入空格
  {
    $addFields: {
      businessNameBreakWords: {
        $reduce: {
          input: {
            $regexFindAll: {
              input: "$businessName",
              regex: /([a-z])([A-Z])/,
              options: "g"
            }
          },
          initialValue: "$businessName",
          in: {
            $replaceOne: {
              input: "$$value",
              find: "$$this.match",
              replacement: "$1 $2"
            }
          }
        }
      }
    }
  },
  // 替换点、下划线为空格
  {
    $addFields: {
      businessNameBreakWords: {
        $replaceAll: {
          input: {
            $replaceAll: {
              input: "$businessNameBreakWords",
              find: ".",
              replacement: " "
            }
          },
          find: "_",
          replacement: " "
        }
      }
    }
  },
  // 移除@等非字母数字/空格的无关字符
  {
    $addFields: {
      businessNameBreakWords: {
        $replaceAll: {
          input: "$businessNameBreakWords",
          find: /[^a-zA-Z0-9\s]/g,
          replacement: ""
        }
      }
    }
  },
  // 合并连续空格为单个空格
  {
    $addFields: {
      businessNameBreakWords: {
        $replaceAll: {
          input: "$businessNameBreakWords",
          find: /\s+/g,
          replacement: " "
        }
      }
    }
  }
])

步骤说明

  1. 驼峰式处理:
    MongoDB 4.4的$replaceAll不支持正则捕获组引用(该功能在5.0+才上线),所以用$regexFindAll匹配所有小写+大写的驼峰片段,再通过$reduce遍历每个匹配结果,用$replaceOne逐个替换为带空格的格式。

  2. 分隔符替换:
    嵌套$replaceAll依次将点(.)、下划线(_)替换为空格。

  3. 清理无关字符:
    用正则/[^a-zA-Z0-9\s]/g匹配并移除所有非字母、数字、空格的字符(比如示例中的@),如果需要保留特定符号,可调整正则表达式。

  4. 规整空格:
    用/\s+/g匹配连续空格,替换为单个空格,避免出现冗余空格。

测试结果

输入文档:

{ "businessName": "Lisbon FunSushiBar" },
{ "businessName": "Escape Room @york.dungeons.minster" }

输出生成字段:

Lisbon Fun Sushi Bar
Escape Room york dungeons minster

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:54:31