Par*_*ani 6 java amazon-dynamodb dynamo-local dynamodb-queries amazon-dynamodb-local
我正在使用 v2 aws DynamoDV Java sdk,并且我想限制通过分区键查询时返回的结果数量(下面的代码片段),但下面的代码返回完整的项目集。
java 文档说“注意:限制不是指要返回的项目数,而是指数据库在执行查询时应评估的项目数。在后续查询调用中将 limit 与 Page.lastEvaluatedKey() 和 ExclusiveStartKey 一起使用来评估限制每次调用的项目。” 这似乎支持我所看到的行为。
但是,如何使用 Java 设置 DynamoDB 返回的匹配项的限制?在早期版本的 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();
Run Code Online (Sandbox Code Playgroud)
请阅读https://github.com/aws/aws-sdk-java-v2/issues/1951
您需要限制从 iterable 返回的页面数。例子
PageIterable<MyMovie> myMovie = moviesTable.query(queryEnhancedRequest);
myMovie.items()
.stream()
.limit(2)
.forEach(content -> System.out.println(" Movie: %s (%s) \n", content.title, content.year));
Run Code Online (Sandbox Code Playgroud)
如果您在 queryEnhancedRequest 中设置 limit(1),这将获取 2 个页面,并且每个页面将有 1 个项目