1

我想对我的 CosmosDb 做一些报告

我的查询是

Select Max(c.results.score) from c 

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

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

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

4

2 回答 2

2

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

Select TOP 1 c.id, c.results.score from c ORDER BY c.results.score DESC
于 2018-06-14T20:14:03.650 回答
0

Cosmos DB 本身不支持 Group by,因此没有开箱即用的方式来执行此查询。

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

{ “id”:1,“highestScore”:1000 }

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

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

链接是:

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

于 2018-06-14T12:16:10.877 回答