Сглаживание вложенных массивов в cosmosdb sql - PullRequest
0 голосов
/ 06 августа 2020

У меня есть следующий документ cosmosdb:

{
  id: "id",
  outer: [
    {
      "inner": [ "a", "b", "c" ]
    },
    {
      "inner": [ "d", "e", "f" ]
    }
  ]
}

И мне нужно создать запрос SQL, который вернет все объединенные значения «внутренних» массивов, например:

{
   "allInners": [ "a", "b", "c", "d", "e", "f" ]
}

Мне удалось раскрутить первый уровень массива с помощью оператора «IN», но я не уверен, как раскрутить его еще на один уровень и обрабатывать двойные или даже тройные вложенные массивы. Ниже приведен мой подзапрос для агрегирования этих элементов

SELECT
  ... other stuff.
  ARRAY(SELECT VALUE innerObj.inner FROM innerObj IN c.outer) AS allInners,
  ...
FROM c

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Попробуйте что-нибудь вроде этого sql:

select ARRAY(SELECT VALUE e FROM c join d in c["outer"] join e in d["inner"]) AS allInners from c 

Вот результат моего теста: введите описание изображения здесь

Надеюсь, это поможет вам .:)

0 голосов
/ 07 августа 2020

Я нашел следующее решение моей проблемы (используя вложенный «IN» и подзапрос):

ARRAY(
   SELECT VALUE inner
   FROM inner IN (
      SELECT VALUE outers.inner
      FROM outers IN c.outer
  )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...