无法获取标识符和最大值 CosmostDb

问题描述 投票:0回答:3

我想在我的 CosmosDb 上做一些报告

我的查询是

Select Max(c.results.score) from c 

那行得通,但我想要最高分的 id 然后我得到一个例外

Select c.id, Max(c.results.score) from c

'c.id' 在选择列表中无效,因为它不包含在 聚合函数

azure nosql azure-cosmosdb nosql-aggregation
3个回答
3
投票

您可以执行以下查询来存档您要问的内容(认为它在 RU/执行时间方面可能不是很有效):

Select TOP 1 c.id, c.results.score from c ORDER BY c.results.score DESC

0
投票

Cosmos DB 本身不支持分组依据,因此没有开箱即用的方法来执行此查询。

要使用开箱即用的功能来实现这一点,您需要创建一个包含聚合输出的新文档类型,例如

{ “编号”:1, “最高分”:1000 }

然后您需要在应用程序中有一个流程来保持最新状态。

还有 documentdb-lumenize 允许您使用存储过程执行此操作。我自己没有使用过它,但作为上述解决方案的替代方案可能值得研究。

链接是:

https://github.com/lmaccherone/documentdb-lumenize


0
投票

Cosmos 现在支持 GROUP BY,因此您的查询将显示为:

Select c.id, Max(c.results.score) from c Group By c.id
© www.soinside.com 2019 - 2024. All rights reserved.