目标:
返回 Cosmos 集合分区内特定文档字段的不同值的计数。
步骤:
如果我在 Azure Cosmos 数据库上运行以下查询,
SELECT DISTINCT c.field
FROM c
WHERE c.field = 'abc' AND c.partitionKeyField = '123'
我按预期得到一行,例如以下回复
[
{
"field": "abc"
}
]
但是,如果我随后运行以下查询,尝试通过以下查询来计算响应中不同文档的数量
SELECT VALUE COUNT(1)
FROM (
SELECT DISTINCT c.field
FROM c
WHERE c.field = 'abc' AND c.partitionKeyField = '123'
)
它回来了
[
6
]
这是
c.field
设置为 "abc"
的文档总数,而不是 c.field
的不同值的数量。
问题:
请您帮助我理解为什么查询返回
c.field
的文档数量而不是不同值的数量,以及是否有一个查询将返回 c.field
的不同值的数量,即 1?
编辑 - PS。我知道这是一个人为的示例,因为根据定义,
c.field
的唯一值的数量始终为 1 - 我故意从实际情况简化了这一点。
在撰写本文时(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