Dynamodb AWS Java扫描withLimit不工作

Dynamodb AWS Java扫描withLimit不工作,java,amazon-dynamodb,aws-java-sdk,Java,Amazon Dynamodb,Aws Java Sdk,我正在尝试使用JavaAWSSDK版本1.11.140使用限制为1的DynamoDBScanExpression 即使我使用.with limit(1)即 仅返回1个结果。DynamoDBMapper.scan将返回分页数据扫描列表-当用户执行需要分页结果的操作时,会根据需要加载分页结果。某些操作(如size())必须获取整个列表,但在可能的情况下会逐页延迟获取结果 因此,DynamoDBScanExpression上设置的limit参数是每页要获取的最大项数 因此,在您的情况下,将返回一个Pa

我正在尝试使用JavaAWSSDK版本1.11.140使用限制为1的DynamoDBScanExpression

即使我使用.with limit(1)即


仅返回1个结果。

DynamoDBMapper.scan将返回分页数据扫描列表-当用户执行需要分页结果的操作时,会根据需要加载分页结果。某些操作(如size())必须获取整个列表,但在可能的情况下会逐页延迟获取结果

因此,DynamoDBScanExpression上设置的
limit
参数是每页要获取的最大项数

因此,在您的情况下,将返回一个PaginatedList,当您执行PaginatedList.size时,它将尝试从Dynamodb加载所有项目,在引擎盖下,每页加载1个项目(每页都是对Dynamodb的获取请求),直到到达PaginatedList的末尾

由于您只对第一个结果感兴趣,因此在不从Dynamo获取所有7个项目的情况下获得该结果的一个好方法是:

    Iterator it = mapper.scan(DomainObject.class, new DynamoDBScanExpression().withLimit(1)).iterator();
    if ( it.hasNext() ) {
        DomainObject dob = (DomainObject) it.next();
    }
使用上述代码,只有第一项将从dynamodb获取

需要注意的是:DynamoDBQueryExpression中的
limit
参数仅用于分页目的。这是对每页项目数量的限制,而不是对可以请求的页数的限制

aws dynamodb scan --table-name auditlog --limit 1 --endpoint-url http://localhost:8000 
    Iterator it = mapper.scan(DomainObject.class, new DynamoDBScanExpression().withLimit(1)).iterator();
    if ( it.hasNext() ) {
        DomainObject dob = (DomainObject) it.next();
    }