首页 > 解决方案 > 为什么 DynamoDB 限制不适用于扫描?

问题描述

我正在运行以下代码:

DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
scanExpression.setLimit(100);
PaginatedScanList<T> list = dynamoDBMapper.scan(clazz, scanExpression);

检查列表的大小时,我得到40,000而不是100

此外,在遍历列表时,我得到了所有 40k 项,而不仅仅是 100 个。

为什么限制不起作用?

使用 java 客户端 SDK 版本1.10.77

标签: javaamazon-dynamodblimit

解决方案


这是AWS Java SDK中该size()方法的实现,它扩展了:PaginatedList<T>PaginatedScanList<T>

  @Override
public int size() {
    loadAllResults();
    return allResults.size();
}

当您调用 时size(),您是在告诉 SDK 获取扫描的所有结果,而不是检查当前页面的大小。


推荐阅读