我正在扫描一个DynamoDb表。奇怪的是,它在第一次调用时返回零项,当我为ExclusiveStartKey参数提供最后的求值键时,返回的项超过零。
let lastEvaluatedKey;
do {
const { Items, LastEvaluatedKey } = await documentClient.scan({
TableName: "myTable",
FilterExpression: "begins_with(pk, :prefix)",
ExpressionAttributeValues: {
":prefix": "something#",
},
ExpressionAttributeNames: {
"#type": "type",
},
ProjectionExpression: "pk",
Limit: 10,
ExclusiveStartKey: lastEvaluatedKey,
});
console.log(`Scanned and found ${Items?.length ?? 0} items`);
lastEvaluatedKey = LastEvaluatedKey;
} while (lastEvaluatedKey);以上输出为
Scanned and found 2 items.我100%肯定在调用之间没有插入任何行。这种模式是一致的,但是有不同数量的0项调用。我原以为这两件东西会在第一次打电话时归还。怎么一回事?
发布于 2022-09-06 14:45:13
您有一些分区。有些分区是空的,或者没有与筛选器匹配的项。您的扫描碰巧从一个空/不匹配的分区开始。单个调用不跨越分区边界,因此第一个检索从空/不匹配分区读取,然后从下一个分区读取。
https://stackoverflow.com/questions/73618030
复制相似问题