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

如何用Mongoose的aggregate()将二维results数组转为长度一维数组

解决方案:使用Mongoose Aggregate转换二维结果数组为长度数组

要将存储用户测验响应的二维results数组转换为各子数组长度组成的一维数组,你可以利用MongoDB的$map和$size操作符,通过Mongoose的aggregate()方法实现:

聚合管道代码示例

// 替换YourModel为你的Mongoose模型名称
YourModel.aggregate([
  {
    $project: {
      results: {
        $map: {
          input: "$results",
          as: "subArray",
          in: { $size: "$$subArray" }
        }
      }
    }
  }
])
.exec()
.then(processedDocs => console.log(processedDocs))
.catch(err => console.error(err));

代码说明

  • $project阶段:用于重构输出文档结构,仅处理并保留results字段。
  • $map操作符:遍历输入的$results二维数组,逐个处理每个子数组(用$$subArray指代当前遍历到的子数组)。
  • $size操作符:计算每个子数组的元素数量,将结果作为新数组的对应位置元素。

效果验证

针对输入示例:

{ "results": [["10938381", "10938382"], [], ["10938383", "10938384", "10938385"], ["10938386"]] }

经过上述聚合处理后,输出结果为:

{ "results": [2, 0, 3, 1] }

该方案完全适配子数组数量不固定的场景(2-5个选项均支持),$map会自动遍历整个数组的所有元素,无需针对不同长度做额外调整。

内容的提问来源于stack exchange,提问作者Airbus A330-200

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:48:24