首页 > 解决方案 > spring-data-cosmosdb:限制结果

问题描述

我正在尝试使用 Azure cosmosDB Java API。我想按页面获取结果。例如:我们可以在 Spring Data JPA 中传递 Pageable 实例并一次获取 10 个项目。我没有找到任何关于我们如何使用 Spring-data-cosmosdb 实现这一点的参考。我也不能在这个插件中使用 @Query("") 注释。所以我不确定如何实现分页。

任何帮助深表感谢。

问候,

文基

标签: azure-cosmosdb

解决方案


在 CosmosDb(或大多数/任何 NoSQL 数据库中)没有简单的方法来完成这种类型的分页,因为 skip/take 并不是真正受支持的查询模式。

更常见的模式是以 a 的形式保留对客户端看到的最后一个项目的引用continuation token,可以在后续请求中将其发送回服务器。例如,用户请求前 10 个项目并取回结果集。第 10 项的标识符是asdfb1231。获取第二个“页面”的查询将包含这个值,以便服务器端可以从这个偏移量继续查询。

这已经在其他地方广泛地写过。我最喜欢的一篇关于该主题的文章是由才华横溢的 Yan Cui 撰写的https://hackernoon.com/guys-were-doing-pagination-wrong-f6c18a91b232,我强烈推荐阅读。


推荐阅读