Как искать только n уровней в массиве документов CosmosDB? - PullRequest
0 голосов
/ 11 января 2019

Я строю на этом вопросе, который я задал ранее

Пример документа такой же

[
    {
        "id": "1",
        "locales": [
            {
                "categories": [
                    "Women",
                    "clothing",
                    "tops"
                ]
            }
        ]
    },
    {
        "id": "2",
        "locales": [
            {
                "categories": [
                    "Men",
                    "test",
                    "tops"
                ]
            }
        ]
    }
]

И я использую следующий запрос, чтобы получить УНИКАЛЬНЫЕ категории из всех документов, и это работает нормально, но мне нужно дополнительно ограничить поиск, чтобы я получил только первые 2 уровня в массиве категорий, и я не могу понять, как измените запрос, чтобы сделать это.

Из примера документа я хотел бы получить только тесты «Женщины, одежда, мужчины», поскольку все они находятся на первых двух уровнях массива.

Как мне настроить мой запрос для достижения этой цели?

1 Ответ

0 голосов
/ 11 января 2019

В любом случае, вы не можете достичь своей цели с одним sql напрямую. Я все еще предлагаю вам использовать комбинацию SQL и хранимой процедуры.

SQL:

SELECT l.categories[0] as one, l.categories[1] as two FROM c
join l in c.locales

Выход:

enter image description here

Затем используйте выше sql в хранимой процедуре, чтобы получить результаты, зациклите ее, чтобы отфильтровать дублирующиеся элементы.


Обновить ответ:

enter image description here

Дубликат будет сравнивать все элементы, поэтому вы не сможете напрямую достичь цели.

...