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

MongoDB聚合查询:如何按正则匹配name字段对vacancy集合分组统计?

MongoDB聚合查询:指定单词分组统计

需求背景

现有vacancy集合,文档结构示例如下:

[
  {
    "name": "Software Developer",
    "published_at": "2022-08-31"
  },
  {
    "name": "Tech Lead",
    "published_at": "2022-08-31"
  },
  {
    "name": "Team Lead",
    "published_at": "2022-08-31"
  },
  {
    "name": "Software Engineer",
    "published_at": "2022-08-31"
  }
]

需要编写聚合查询,通过正则验证name字段中"Software"和"Lead"的存在,返回如下分组统计结果:

[
  {
    "_id": "Software",
    "count": 2
  },
  {
    "_id": "Lead",
    "count": 2
  }
]

聚合查询实现

db.vacancy.aggregate([
  // 拆分name字段为单词数组
  {
    $addFields: {
      words: { $split: ["$name", " "] }
    }
  },
  // 将数组拆分为单个单词的独立文档
  { $unwind: "$words" },
  // 筛选出匹配目标单词的文档(正则精确匹配)
  {
    $match: {
      words: { $in: [/^Software$/, /^Lead$/] }
    }
  },
  // 按单词分组统计出现次数
  {
    $group: {
      _id: "$words",
      count: { $sum: 1 }
    }
  }
])

逻辑说明

  • $addFields + $split:将name字段按空格分割为单词数组,新增words字段存储该数组。
  • $unwind:把数组拆分成单个单词的文档,确保每个单词能单独被统计。
  • $match:用正则精确匹配"Software"和"Lead",过滤掉无关单词的文档。
  • $group:以匹配到的单词为分组键,统计每个单词的出现次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:54:23