DynamoDb:扫描查询不会返回所有数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DynamoDb:扫描查询不会返回所有数据相关的知识,希望对你有一定的参考价值。
我有一个包含数千个数据的DynamoDb表。我正在使用扫描功能扫描表格,我已经应用了“Between”FilterExpression。但是,查询响应仅提供3条记录,而它应返回约100条记录。
我使用Node 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);
以上是关于DynamoDb:扫描查询不会返回所有数据的主要内容,如果未能解决你的问题,请参考以下文章