cosmos db query与null数组的自联接

时间:2018-04-24 06:08:27

标签: sql azure azure-cosmosdb

我想从cosmos db azure获取记录。有以下两个条件 -

SELECT p.name, p.id
FROM Product p join grp in p.groups
where grp.name = 'abc' or ARRAY_LENGTH(grp) = 0 

第一部分是给我结果没有或条件即(文件1)。但我希望这些记录也不包含p.groups中的任何记录,即(文件2)。

我的数据:

文件1 -

"id": "123",
"name": "Test Name",
"groups": [
        {
            "name": "abc"        }
]

文件2 -

"id": "1234",
"name": "Test Name Blank",
"groups": []

预期输出:

[
    {
        "name": "Test Name",
        "id": "123"
    },
{
        "name": "Test Name Blank",
        "id": "1234"
    },
]

1 个答案:

答案 0 :(得分:0)

您可以使用以下sql:

SELECT c.id,c.name from c where ARRAY_LENGTH(c.groups) =0 or ARRAY_CONTAINS(c.groups, {"name": "abc"}, true)

输出结果:

enter image description here

希望它对你有所帮助。