首页 文章

spring-data-cosmosdb:限制结果

提问于
浏览
1

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

任何帮助深表感谢 .

问候,

Venky

2 回答

  • 0

    您可能能够在 FeedResponse 中表示的公开 continuation token 周围构建一些东西 .

    FeedOptions queryOptions = new FeedOptions();
        queryOptions.setPageSize(10);
        queryOptions.setRequestContinuation("continuation token from previous request");
    
        FeedResponse<Document> queryResults = this.client.queryDocuments(collectionLink,
                "SELECT * FROM Family WHERE Family.lastName = 'Andersen'", queryOptions);
        string token = queryResults.getResponseContinuation()
    

    This is an example of how you can do this in the C# SDK.我没有看到在Java中做同样事情的方法,所以你可能需要玩它 .

  • 0

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

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

    这已在其他地方广泛撰写 . 关于这个主题的我最喜欢的文章之一是由辉煌的严翠https://hackernoon.com/guys-were-doing-pagination-wrong-f6c18a91b232写的,我强烈推荐阅读 .

相关问题