我想在我的 CosmosDb 上做一些报告
我的查询是
Select Max(c.results.score) from c
那行得通,但我想要最高分的 id 然后我得到一个例外
Select c.id, Max(c.results.score) from c
'c.id' 在选择列表中无效,因为它不包含在 聚合函数
您可以执行以下查询来存档您要问的内容(认为它在 RU/执行时间方面可能不是很有效):
Select TOP 1 c.id, c.results.score from c ORDER BY c.results.score DESC
Cosmos DB 本身不支持分组依据,因此没有开箱即用的方法来执行此查询。
要使用开箱即用的功能来实现这一点,您需要创建一个包含聚合输出的新文档类型,例如
{ “编号”:1, “最高分”:1000 }
然后您需要在应用程序中有一个流程来保持最新状态。
还有 documentdb-lumenize 允许您使用存储过程执行此操作。我自己没有使用过它,但作为上述解决方案的替代方案可能值得研究。
链接是:
Cosmos 现在支持 GROUP BY,因此您的查询将显示为:
Select c.id, Max(c.results.score) from c Group By c.id