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

如何通过MongoDB聚合统计对象数组中资产名称重复次数

MongoDB聚合实现资产名称统计需求

嘿,我来帮你把这个统计需求转换成MongoDB的聚合管道方案,完全匹配你想要的结果格式,而且和你写的JavaScript逻辑是对应的哦~

完整聚合管道代码

db.collection.aggregate([
  // 把每个文档的assets数组拆分成独立文档,让每个资产单独成为一条记录
  { $unwind: "$assets" },
  // 按资产名称分组,统计每个名称的出现次数
  {
    $group: {
      _id: "$assets.name", // 用资产名称作为分组键
      count: { $sum: 1 }   // 累加每个分组的数量
    }
  },
  // 调整字段格式,转换成你需要的输出结构
  {
    $project: {
      _id: 0,              // 去掉默认的_id字段
      assets: "$_id",      // 把分组的_id(资产名称)重命名为assets
      count: 1             // 保留count字段
    }
  }
])

和你的JavaScript逻辑对应关系

咱们来对应一下你写的JS代码,这样你能更快理解:

  • $unwind阶段:就相当于你把原始数据拆成[{asset: "xa"}, {asset: "xs"}, ...]的过程,把嵌套数组里的每个资产元素单独拎出来;
  • $group阶段:对应你用reduce累加count的逻辑——按资产名称分组,每遇到一个同名资产就把count加1;
  • $project阶段:对应你最后用map转换结构的步骤,把分组后的字段调整成你要的{assets: "...", count: ...}格式。

最终输出结果

执行上面的聚合命令后,会得到你预期的结果:

[
  { "assets": "xa", "count": 3 },
  { "assets": "xs", "count": 2 },
  { "assets": "xd", "count": 1 }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 03:42:35