azure-cosmosdb - spring-data-cosmosdb:限制结果
问题描述
我正在尝试使用 Azure cosmosDB Java API。我想按页面获取结果。例如:我们可以在 Spring Data JPA 中传递 Pageable 实例并一次获取 10 个项目。我没有找到任何关于我们如何使用 Spring-data-cosmosdb 实现这一点的参考。我也不能在这个插件中使用 @Query("") 注释。所以我不确定如何实现分页。
任何帮助深表感谢。
问候,
文基
解决方案
在 CosmosDb(或大多数/任何 NoSQL 数据库中)没有简单的方法来完成这种类型的分页,因为 skip/take 并不是真正受支持的查询模式。
更常见的模式是以 a 的形式保留对客户端看到的最后一个项目的引用continuation token
,可以在后续请求中将其发送回服务器。例如,用户请求前 10 个项目并取回结果集。第 10 项的标识符是asdfb1231
。获取第二个“页面”的查询将包含这个值,以便服务器端可以从这个偏移量继续查询。
这已经在其他地方广泛地写过。我最喜欢的一篇关于该主题的文章是由才华横溢的 Yan Cui 撰写的https://hackernoon.com/guys-were-doing-pagination-wrong-f6c18a91b232,我强烈推荐阅读。
推荐阅读
- python - 用多个字典值替换字符串中的单词?
- javascript - 未捕获的类型错误,损坏的 JS
- dart - NoSuchMethodError 在 null 上调用了 getter 'value'
- html - 为什么 GitHub Pages 会改变我的按钮格式?
- libreoffice-calc - 根据部分日期值添加列值
- angularjs - Apostrophe CMS + Express.js 后端 + Angular 集成
- angularjs - 将数据从父组件传递到子 angular.js 组件
- ios - 背景颜色不改变?
- postgresql - 恢复转储时 psql 内存不足
- c# - Xamarin/C# POST 到 RESTful api