Cosmos DB分页查询:如何获取总记录数或总页数?
Cosmos DB分组分页与总计数获取问题解答
一、分组分页下获取总行数/总页数是否可行?
完全可行,但要明确这里的总行数是分组后的结果集数量,而非原始文档总数,具体实现方式有两种:
- 拆分两次查询
- 第一次执行带
OFFSET和LIMIT的分组查询,获取当前页数据; - 第二次执行聚合查询统计分组后的总结果数,示例SQL:
SELECT COUNT(1) AS totalCount FROM ( -- 替换为你的分组查询语句,比如 SELECT c.category, COUNT(c.id) FROM c GROUP BY c.category ) AS groupedResults - 总页数可通过
CEILING(totalCount / 每页大小)计算得出。
缺点是会额外消耗RU,因为要执行两次查询。
- 第一次执行带
- 单查询返回数据+总计数(仅部分场景适用)
如果分组逻辑允许,可通过子查询将分页数据和总计数放在同一条查询结果中,但会增加单查询的RU消耗,且结果结构需要额外处理。
二、能否通过GetItemQueryIterator获取Output document count?
不行。GetItemQueryIterator是Cosmos DB SDK用于流式获取查询结果的迭代器,它本身不会返回查询结果的总计数(即Azure Data Explorer里显示的Output document count)。这个计数是ADX针对自身查询的统计元数据,Cosmos DB SDK并未暴露这类元数据的接口。
若需要获取结果总数,必须通过显式的聚合查询(如上述COUNT(1)语句)来获取,再结合分页逻辑计算总页数。
内容的提问来源于stack exchange,提问作者wmmhihaa
相关产品推荐
相关产品推荐

