如何编写 Azure Cosmos COUNT DISTINCT 查询

use*_*450 6 distinct azure azure-cosmosdb azure-cosmosdb-sqlapi

目标

返回 Cosmos 集合分区内特定文档字段的不同值的计数。

脚步

如果我在 Azure Cosmos 数据库上运行以下查询,

SELECT DISTINCT c.field
FROM c
WHERE c.field = 'abc' AND c.partitionKeyField = '123'
Run Code Online (Sandbox Code Playgroud)

我按预期得到一行,例如以下响应

[
    {
        "field": "abc"
    }
]

Run Code Online (Sandbox Code Playgroud)

但是,如果我随后运行以下查询以尝试通过以下查询计算响应中不同文档的数量

[
    {
        "field": "abc"
    }
]

Run Code Online (Sandbox Code Playgroud)

它返回

[
    6
]
Run Code Online (Sandbox Code Playgroud)

c.field这是设置为 的文档总数,"abc"而不是 的不同值的数量c.field

问题

请您帮助我理解为什么查询返回 的文档数量而不是不同值的数量c.field,以及是否有一个查询将返回 的不同值的数量c.field,即 1?

编辑-PS。我知道这是一个人为的示例,因为根据定义,唯一值的数量c.field始终为 1 - 我故意从实际情况简化了这一点。

Krz*_*tof 4

在撰写本文时(2021 年 1 月 22 日),此查询提供了正确数量的不同值:

SELECT COUNT(UniqueFields) AS UniqueCount
FROM (SELECT DISTINCT c.field
    FROM c
    WHERE c.field = 'abc' AND c.partitionKeyField = '123') as UniqueFields
Run Code Online (Sandbox Code Playgroud)