QueryEnhancedRequest for DynamoDB Java v2 sdk 中的 limit 方法未按预期进行限制



我使用的是 v2 aws DynamoDV Java 开发工具包,我想限制按分区键查询时返回的结果数(下面的代码片段(,但下面的代码返回了完整的项目集。

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

但是,如何设置 DynamoDB 使用 Java 返回的匹配项的限制? 在早期版本的开发工具包中使用 .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();

请阅读 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));

这将获取 2 个页面,如果您在查询中设置 limit(1( 增强请求,则每个页面将有 1 个项目

最新更新