首页 > 解决方案 > MongoDB 展平任意嵌套数组

问题描述

我有一个包含任意嵌套数组的文档结构,类似于以下内容,我想在聚合管道期间将其展平:

{ 
  "data": [
    "one",
    [
      "two", 
      "three"
    ],
    [
      [ "four" ],
      [ "five" ]
    ]
  ]
}

预期结果:

{ "data": [ "one", "two", "three", "four", "five" ] }

Existing question here给出了一些想法(尤其是这个答案),但并不完全具有任意嵌套深度。

有没有更通用的解决方案?

标签: mongodbaggregation-framework

解决方案


MongoDB 不提供任何循环或递归,因此任意多次执行任何操作都是不可能的。

您可以在客户端中以编程方式构建一个聚合管道,该管道可以将数组展平数十级深度,但整个管道必须适合 16MB 的请求文档,因此它不支持任意深度。


推荐阅读