嵌套对象的子对象的 Cosmos DB SQL API 查询

kya*_*les 2 azure-cosmosdb azure-cosmosdb-sqlapi

我想找到一种更好的方法来搜索集合中的文档是否具有数组中元素多于 0 的属性,即任何非空元素。

such as: select * from c where c.property = 'x' and array_length(c.child) > 0 and array_length(c.child.grandchild) > 0
Run Code Online (Sandbox Code Playgroud)

第一个数组长度有效。当我在其他地方阅读时,仅使用此点符号添加第二个不起作用。我怎样才能确保我能做到这一点。孙子将是从 0 到许多数字的任何地方,它的数组长度大于 0。

如果需要更多说明,请告诉我。

Jay*_*ong 5

请使用以下sql:

SELECT distinct c.id,c.name,c.child FROM c
join child in c.child 
 where array_length(c.child) > 0 
and array_length(child.grandchild) > 0
Run Code Online (Sandbox Code Playgroud)

我的示例文件:

[
    {
        "id": "1",
        "name": "Jay",
        "child": [
            {
                "name": "A",
                "grandchild": [
                    {
                        "name": "A1"
                    },
                    {
                        "name": "A2"
                    }
                ]
            },
            {
                "name": "B",
                "grandchild": [
                    {
                        "name": "B1"
                    },
                    {
                        "name": "B2"
                    }
                ]
            }
        ]
    },
    {
        "id": "2",
        "name": "Tom",
        "child": [
            {
                "name": "A",
                "grandchild": []
            },
            {
                "name": "B",
                "grandchild": []
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

希望对你有帮助。