DocumentDB Sub Query
Я пытаюсь проецировать из большого документа, содержащего двойной вложенный массив, в плоское представление массива, и я застрял на том, как продолжить.
У меня есть документы, похожие на это:
{
"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"
}
}
]
]
}
Я пытаюсь спроецировать его на следующую структуру:
{
"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
}
]
]
}
Я добился определенного успеха, используя следующий запрос:
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")
Однако это возвращает отдельную запись для каждого типа компонента. Я пытаюсь сложить их все вместе, чтобы все компоненты находились внутри одного экземпляра содержащего документ. Я надеялся, что смогу сделать что-то вроде вложенного SELECT, где я могу присоединиться к внешнему документу, подобно этому:
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")
Но это неверно. Я ищу информацию о вложенных / вложенных выборках и возвращении данных путем детализации вложенных массивов.