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

如何统计MongoDB数组中值的出现次数并获取最高频次结果?

统计MongoDB数组元素出现次数并获取高频结果

嘿,这就帮你搞定MongoDB里统计数组元素出现次数并提取高频结果的需求!针对你给出的文档结构,我们可以用MongoDB的聚合管道来实现,步骤清晰又高效。

完整聚合查询命令

直接用这段代码就能得到你想要的结果(记得把yourCollectionName换成你实际的集合名称):

db.yourCollectionName.aggregate([
  // 拆分数组,每个依赖值单独成为一条文档
  { $unwind: "$devDependenciesList" },
  // 按依赖值分组,统计出现次数
  {
    $group: {
      _id: "$devDependenciesList",
      count: { $sum: 1 }
    }
  },
  // 按出现次数降序排序,次数相同则按依赖值排序
  { $sort: { count: -1, _id: 1 } },
  // 保留前3个高频结果(可根据需求调整数量)
  { $limit: 3 },
  // 调整输出结构,匹配你想要的格式
  {
    $group: {
      _id: null,
      topDependencies: {
        $push: {
          $concat: ["$_id", ":", { $toString: "$count" }]
        }
      }
    }
  },
  { $project: { _id: 0 } }
])

各阶段作用拆解

我给你理清楚每个步骤的逻辑,方便你按需调整:

  • $unwind阶段:把每个文档里的devDependenciesList数组拆分成多条独立文档,每条对应一个依赖值,这是实现单个值统计的基础。
  • $group阶段:以依赖值作为分组键,用$sum:1累加每个值的出现次数,得到每个依赖的总出现次数。
  • $sort阶段:按统计次数从高到低排序,确保高频结果排在最前面;如果两个依赖次数相同,会按依赖值的字母顺序排序,让结果更规整。
  • $limit阶段:只保留前N个高频结果,这里设置为3刚好匹配你想要的输出数量,你可以随时修改这个数字。
  • 最后两个阶段:把统计结果合并成你期望的[value1:3,value4:3,value3:2]格式的数组,让输出完全贴合需求。

最终输出结果

执行上面的查询后,你会得到如下结果:

{ "topDependencies": ["value1:3", "value4:3", "value3:2"] }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:40:50