Mongodb 连接mongo文档中的所有数组字段

Mongodb 连接mongo文档中的所有数组字段,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,考虑一下,我们有一份如下的文件 { "name" : "ABC", "destination" : { "id" : "123", "place": "xyz" }, "elements": [ { "_id": "123", "name": "abc", "minorElements": [ [{}, {}, {

考虑一下,我们有一份如下的文件

{
    "name" : "ABC",
    "destination" : {
        "id" : "123",
        "place": "xyz"
    },
    "elements": [
        {
            "_id": "123",
            "name": "abc",
            "minorElements": [
                [{}, {}, {}, .....{}],
                [{}, {}, {}, .....{}],
                ...
            ],
            "majorElements": [
                [{}, {}, {}, .....{}],
                [{}, {}, {}, .....{}],
                ...
            ]
        }
    ]
}
如何编写mongo db聚合来连接所有数组字段并创建一个结果文档,如:

"name" : "ABC",
"destination" : {
  "id" : "123",
  "place": "xyz"
},
{
  "elements": [{}, {}, {}, ..... {} ]  
  // elements contains all minorElements + majorElements + ...
}

这符合你的要求吗

db.collection.aggregate([
  {
    $addFields: {
      elements: {
        $reduce: {
          input: "$elements",
          initialValue: [],
          in: {
            $let: {
              vars: {
                elem: "$$this"
              },
              in: {
                $reduce: {
                  input: {
                    $objectToArray: "$$elem"
                  },
                  initialValue: [],
                  in: {
                    $concatArrays: [
                      "$$value",
                      {
                        $cond: [
                          {
                            $isArray: "$$this.v"
                          },
                          "$$this.v",
                          []
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        }
      }
    }
  }
])

“元素”是文档中的一个字段。请检查更新的问题。在这种情况下,输入:{$objectToArray:$$ROOT}不起作用@瓦利洪