Azure cosmosdb 如何编写Azure Cosmos COUNT独立查询

Azure cosmosdb 如何编写Azure Cosmos COUNT独立查询,azure-cosmosdb,distinct,azure-cosmosdb-sqlapi,Azure Cosmosdb,Distinct,Azure Cosmosdb Sqlapi,目标: 返回Cosmos集合分区内特定文档字段的不同值计数 步骤: 如果我在Azure Cosmos数据库上运行以下查询 选择不同的c字段 来自c 其中c.field='abc'和c.partitionKeyField='123' 我得到了预期的一行,例如以下响应 [ { "field": "abc" } ] 但是,如果我随后运行以下查询,试图通过以下查询计算响应中不同文档的数量 选择值COUNT1 从…起 选择不同的c字段 来自c 其中c.field='ab

目标:

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

步骤:

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

选择不同的c字段 来自c 其中c.field='abc'和c.partitionKeyField='123' 我得到了预期的一行,例如以下响应

[
    {
        "field": "abc"
    }
]

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

选择值COUNT1 从…起 选择不同的c字段 来自c 其中c.field='abc'和c.partitionKeyField='123' 它回来了

[
    6
]
这是c.field设置为abc的文档总数,而不是c.field的不同值的数目

问题:

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


编辑-附言。我知道这是一个人为的例子,因为根据定义,c.field的唯一值的数量始终为1-我有意将其从实际情况中简化。

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

选择COUNTUniqueFields作为UniqueCount 从选择不同的c字段 来自c 其中c.field='abc'和c.partitionKeyField='123'作为唯一字段
有趣的是,GROUP BY返回我想要的,例如sql SELECT d.field,COUNT1 FROM SELECT DISTINCT c.field FROM c,其中c.field='abc'和c.partitionKeyField='123',因为d GROUP BY d.field返回json[{field:abc,$1:1}]根据我的经验,这种类型的查询不可靠。我报告了一些类似的事情,得到了一个可笑的回应,完全没有抓住要点,但通过其他渠道再次提出,并认为它在某个时候会被修复……谢谢。很高兴知道我应该避免使用此查询。你的链接是我找到的几个有类似问题的人的页面之一。你有没有像上面的评论那样和一组人一起解决这个问题,或者其他什么问题?我想我刚刚得出结论,我在CosmosDb上运行这个程序是运气不好的,没有想出任何解决办法。希望小组为你工作!