3

我正在使用 v2 aws DynamoDV Java sdk,并且我想限制通过分区键查询时返回的结果数量(下面的代码片段),但下面的代码返回了完整的项目集。

java文档说“注意:限制不是指要返回的项目数,而是数据库在执行查询时应该评估多少项目。在后续查询调用中使用limit与Page.lastEvaluatedKey()和exclusiveStartKey一起评估限制每次通话的项目。” 这似乎支持我所看到的行为。

但是,如何设置 DynamoDB 使用 Java 返回的匹配项的限制?在早期版本的 sdk 中有一个使用 .withMaxResultSize 方法的解决方案。

java dynamodb v2 skd 是否有类似的东西,还是我必须手动限制结果集?代码如下:

QueryConditional conditional = QueryConditional.keyEqualTo(
                Key.builder()
                        .partitionValue(jobId)
                        .build()
        );
QueryEnhancedRequest request = QueryEnhancedRequest.builder()
                .queryConditional(conditional)
                .limit(1)
                .scanIndexForward(false)
                .build();

4

1 回答 1

0

请阅读https://github.com/aws/aws-sdk-java-v2/issues/1951

您需要限制从可迭代返回的页面数。例子

PageIterable<MyMovie> myMovie = moviesTable.query(queryEnhancedRequest);

myMovie.items()
        .stream()
        .limit(2)
        .forEach(content -> System.out.println(" Movie: %s (%s) \n", content.title, content.year));

如果您在 queryEnhancedRequest 中设置 limit(1),这将获取 2 个页面,每个页面将有 1 个项目

于 2021-07-21T17:44:38.743 回答