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

li9yvcax  于 2023-05-07  发布在  其他
关注(0)|答案(3)|浏览(130)

我想在我的CosmosDb上做一些报告
我的查询是

Select Max(c.results.score) from c

这样就可以了,但是我想要最高分的id,然后我得到一个异常

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

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

pu3pd22g

pu3pd22g1#

你可以执行下面的查询来归档你所要求的内容(尽管在RU/执行时间方面可能不是很有效):

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

fae0ux8s2#

在Cosmos DB中本机不支持Group by,因此没有现成的方法来执行此查询。
要使用开箱即用的功能实现这一点,您需要创建一个新的文档类型,其中包含聚合的输出,例如
{“id”:1,“highestScore”:1000 }
然后,您需要在应用程序中使用一个流程来保持更新。
还有一个documentdb-lumenize,它允许您使用存储过程来执行此操作。我自己没有使用过它,但它可能值得作为上述解决方案的替代方案进行研究。
Link是:
https://github.com/lmaccherone/documentdb-lumenize

bhmjp9jg

bhmjp9jg3#

Cosmos现在支持GROUP BY,所以你的查询应该是:

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

相关问题