DocumentDB:如何在数组中的数组上过滤文档?

时间:2017-10-19 19:09:49

标签: javascript sql arrays azure azure-cosmosdb

我们说我有以下文件:

{
"Id": "1",
"Properties": [
    {
        "Name": "Name1",
        "PropertyTypes": [
            "Type1"
        ]
    },
    {
        "Name": "Name2",
        "PropertyTypes": [
            "Type1",
            "Type2",
            "Type3"
        ]
    }
]
}

当我使用以下SQL时:

SELECT c.Id FROM c
JOIN p in c.Properties
WHERE ARRAY_CONTAINS(p.PropertyTypes,"Type1")

我得到了回报:

[
{
    "Id": "1"
},
{
    "Id": "1"
}
]

如何更改查询以便它只返回不同的文档?

1 个答案:

答案 0 :(得分:1)

据我所知,Azure Cosmos DB尚未支持Distinct

似乎无法在查询SQL级别中删除重复数据。

您可以在loop本地处理查询结果集。

但是,如果结果数据很大,我建议您使用存储过程处理Azure Cosmos DB中的结果数据,以释放本地服务器上的压力。

您可以参考official tutorial关于SP。