Amazon dynamodb DynamoDb:扫描查询不会返回所有数据

Amazon dynamodb DynamoDb:扫描查询不会返回所有数据,amazon-dynamodb,aws-lambda,aws-sdk,amazon-dynamodb-streams,Amazon Dynamodb,Aws Lambda,Aws Sdk,Amazon Dynamodb Streams,我有一个DynamoDb表格,里面有成千上万的数据。我正在使用Scan函数扫描表,并应用了“Between”过滤器表达式。 然而,查询响应只给出3条记录,而它应该返回大约100条记录 我已经使用节点js创建了Lambda函数。另一个常见问题可能是在LastEvaluatedKey为空之前是否执行扫描 如果您已经这样做了,但仍然没有得到所有的项目,请显示您的代码来详细查看它 如果扫描的项目总数超过最大数据集大小 限制为1 MB时,扫描将停止并将结果返回给用户 LastEvaluatedKey值,用

我有一个DynamoDb表格,里面有成千上万的数据。我正在使用Scan函数扫描表,并应用了“Between”过滤器表达式。 然而,查询响应只给出3条记录,而它应该返回大约100条记录


我已经使用节点js创建了Lambda函数。

另一个常见问题可能是在LastEvaluatedKey为空之前是否执行扫描

如果您已经这样做了,但仍然没有得到所有的项目,请显示您的代码来详细查看它

如果扫描的项目总数超过最大数据集大小 限制为1 MB时,扫描将停止并将结果返回给用户 LastEvaluatedKey值,用于在后续操作中继续扫描 活动结果还包括超过标准的项目数量 限制。扫描可能导致没有符合筛选条件的表数据

如果LastEvaluatedKey为空,则显示结果的“最后一页” 已处理,并且没有更多的数据要检索

如果LastEvaluatedKey不是空的,并不一定意味着 结果集中有更多数据。只有这样才能知道你什么时候 当LastEvaluatedKey为时,已到达结果集的末尾 空的


下面是获得所有结果的示例代码:

 Map<String, AttributeValue> lastKeyEvaluated = null;
    do {
        ScanRequest sr = new ScanRequest()
                .withTableName("tableName")
                .withProjectionExpression("id")
                .withExclusiveStartKey(lastKeyEvaluated);
        ScanResult result = client.scan(sr);
        for (Map<String, AttributeValue> item : result.getItems()) {
            System.out.println(item.get("id").getS());
        }
        lastKeyEvaluated = result.getLastEvaluatedKey();
    } while (lastKeyEvaluated != null);
Map lastKeyEvaluated=null;
做{
ScanRequest sr=新的ScanRequest()
.withTableName(“tableName”)
.带有ProjectionExpression(“id”)
.使用排他性EstartKey(lastKeyEvaluated);
ScanResult结果=客户端扫描(sr);
对于(映射项:result.getItems()){
System.out.println(item.get(“id”).get();
}
lastKeyEvaluated=result.getLastEvaluatedKey();
}while(lastKeyEvaluated!=null);

最可能的原因是筛选器表达式正在过滤掉一些值。在这种情况下,DynamoDB仍然必须扫描整个表并逐页浏览结果。每个响应将只包含与筛选条件匹配的项,以及必须在下一个请求中包含的LastEvaluateKey以继续扫描。一开始这有点不直观,但如果您仔细考虑一下,它是有意义的。要使用
Node.js
AWS Dynamodb
获取/扫描所有项目,您可以参考:请在您的答案中添加一些描述。此答案非常有用,谢谢。但是请注意,使用AWS SDK 2.0
result.getLastEvaluatedKey()
返回一个空的非空映射。因此,我必须在检查
时更改
条件空&!空的