如何仅搜索CosmosDB文档数组中的n个级别?

时间:2019-01-11 02:52:08

标签: azure-cosmosdb azure-cosmosdb-sqlapi

我基于我先前提出的this问题

示例文档是相同的

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

我正在使用以下查询从所有文档中获取UNIQUE类别,效果很好,但是我需要进一步限制搜索,因此我只获得Categories数组中的前2个级别,因此无法弄清楚调整查询即可做到这一点。

从示例文档中,我只想获取Women,Washington,Men,Test,因为它们都位于数组的前2个级别中。

如何调整查询以实现这一目标?

1 个答案:

答案 0 :(得分:0)

无论如何,使用单个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

重复项将比较所有元素,因此您无法直接达到目标。