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

时间:2018-08-14 16:10:52

标签: 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

第一个arraylength有效。我在其他地方阅读时,仅用该点符号添加第二个不起作用。我如何确保自己能做到这一点。孙子将在0到许多数字之间的任意位置,并且其数组长度将大于0。

请让我知道是否需要进一步说明。

1 个答案:

答案 0 :(得分:1)

请在下面的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

我的样本文档:

[
    {
        "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": []
            }
        ]
    }
]

希望它对您有帮助。