DocumentDB Sub Query

Ich versuche, aus einem großen Dokument, das ein doppelt verschachteltes Array enthält, eine abgeflachte Darstellung des Arrays zu erstellen, und bin nicht sicher, wie ich vorgehen soll.

Ich habe ähnliche Dokumente:

{
    "id": "1",
    "themeId": "e4d3549c-2785-4067-83d6-f396d2212776",
    "enabled": false,
    "archived": false,
    "componentGroups": [
      [
        {
          "componentType": "header",
          "enabled": true,
          "configurationVariables": {
            "text1": "AAA",
            "text2": "BBB"
          }
        }
      ],
      [
        {
          "componentType": "prompt",
          "enabled": true,
          "configurationVariables": {
            "text1": "AAA",
            "text2": "BBB"
          }
        },
        {
          "componentType": "proactive",
          "enabled": true,
          "configurationVariables": {
            "text1": "AAA",
            "text2": "BBB"
          }
        }
      ],
      [
        {
          "componentType": "product-feed",
          "enabled": true,
          "configurationVariables": {
            "text1": "AAA",
            "text2": "BBB"
          }
        }
      ]
    ]
  }

Ich versuche, es auf die folgende Struktur zu projizieren:

{
    "id": "275973",
    "themeId": "e4d3549c-2785-4067-83d6-f396d2212776",
    "enabled": false,
    "archived": false,
    "components": [
        {
          "componentType": "header",
          "enabled": true
        },
        {
          "componentType": "prompt",
          "enabled": true,
        },
        {
          "componentType": "proactive",
          "enabled": true,
        },
        {
          "componentType": "product-feed",
          "enabled": true
        }
      ]
    ]
  }

Ich hatte mit der folgenden Abfrage einige Erfolge:

SELECT T.id, 
    T.themeId, 
    T.enabled, 
    T.archived, 
    [ { type: C.componentType, enabled: C.enabled } ] AS components
FROM Panels T 
JOIN CG IN T.componentGroups
JOIN C IN CG
WHERE T.id IN ("275973")

Dies gibt jedoch einen separaten Datensatz für jeden Komponententyp zurück. Ich versuche, sie alle zusammen zu falten, damit sich alle Komponenten in einer einzelnen Instanz des enthaltenen Dokuments befinden. Ich hatte gehofft, in der Lage zu sein, so etwas wie ein verschachteltes SELECT zu machen, bei dem ich mich mit dem äußeren Dokument verbinden kann, ähnlich dem folgenden:

SELECT T.id, 
T.themeId,
T.enabled, 
T.archived, 
[ 
    SELECT C.componentType, C.enabled
    FROM CG IN T.componentGroups
    JOIN C IN CG 
] AS components
FROM Panels T
WHERE T.id IN ("275973")

Aber das ist ungültig. Ich suche nach Informationen über untergeordnete / verschachtelte Auswahlen und das Zurückgeben von Daten, indem ich verschachtelte Arrays durchforste.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage