簡體   English   中英

如何 SQL 在 MS Azure CosmosDB 中查詢嵌套列表和數組?

[英]How to SQL query a nested list and array in a MS Azure CosmosDB?

我有以下 ( Azure ) CosmosDB (子)結構,它有 2 個嵌套的 arrays:

{
    "id": "documentTypes",
    "SomeThing": "SomeThing",
    "configuration": [
        {
            "language": "en",
            "list": [
                {
                    "id": 1,
                    "name": "Supporting Documents"
                },
                {
                    "id": 2,
                    "name": "Summary PDF"
                },
            ]
        }
    ],
}

我嘗試了以下查詢,但結果很差。

SELECT * FROM c WHERE c.documentTypes.configuration[0].list[0].id FROM c

SELECT
    p.id,       
    p.name
FROM f
    JOIN c IN f.configuration
    JOIN p IN c.list
WHERE c.id == 'documentTypes'

Q :我怎樣才能只得到nameid的列表?

你需要這個?

SELECT ARRAY(SELECT VALUE e FROM c JOIN d IN c["configuration"] JOIN e IN d["list"]) AS Result FROM c

Output:

[ { "Result": [ { "id": 1, "name": "Supporting Documents" }, { "id": 2, "name": "Summary PDF" } ] } ]

我自己的解決方案類似於Sajeetharan的:

SELECT list.id, list.name FROM c
    JOIN configuration IN c.configuration 
    JOIN list IN configuration.list
WHERE c.id = 'documentTypes'

這對我來說看起來更簡單一些,因為不需要[""]ARRAY() function,而且不會產生額外的Result項。 我不知道是否有任何性能差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM