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

MongoDB中将嵌套数组转换为单行语句的实现问询

MongoDB嵌套数组按角色合并Permission实现方案

核心需求

将集合中嵌套的MainArray.SubArray数组,按相同角色编码合并对应的Permission列,输出格式为"Test": [角色编码] , [合并后的权限列表]。

实现代码(MongoDB聚合管道)

db.yourCollectionName.aggregate([
  // 展开外层MainArray数组
  { $unwind: "$MainArray" },
  // 展开内层SubArray数组
  { $unwind: "$MainArray.SubArray" },
  // 按角色编码分组,合并Permission
  {
    $group: {
      _id: "$MainArray.SubArray.角色编码字段名", // 替换为实际的角色编码列名
      mergedPermissions: { $push: "$MainArray.SubArray.Permission" } // 收集同角色的所有Permission
    }
  },
  // 格式化输出为指定格式
  {
    $project: {
      _id: 0,
      Test: {
        $concat: [
          { $toString: "$_id" },
          " , ",
          { $join: ["$mergedPermissions", ", "] } // 合并权限为逗号分隔的字符串
        ]
      }
    }
  }
])

代码说明

  • $unwind:逐层展开嵌套数组,将数组元素转为单独的文档条目,方便后续分组操作。
  • $group:以角色编码为分组键,用$push收集同一角色下的所有Permission值。
  • $project:将分组结果格式化为需求的Test字段,用$concat和$join拼接成指定字符串格式。

注意事项

  • 替换代码中的yourCollectionName为实际集合名称。
  • 替换角色编码字段名和Permission为表中对应的实际列名。
  • 如果需要保留原始文档的其他字段,可以在$group阶段添加$first或$push来保留。

内容的提问来源于stack exchange,提问作者John Kenneth Dimarillas Siva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:14:58