首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DynamoDb ExclusiveStartKey扫描在第一次运行时返回零项,然后返回超过零项

问DynamoDb ExclusiveStartKey扫描在第一次运行时返回零项,然后返回超过零项
EN

Stack Overflow用户
提问于 2022-09-06 07:11:15
回答 1查看 46关注 0票数 0

我正在扫描一个DynamoDb表。奇怪的是,它在第一次调用时返回零项,当我为ExclusiveStartKey参数提供最后的求值键时,返回的项超过零。

代码语言:javascript
复制
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);

以上输出为

代码语言:javascript
复制
Scanned and found 2 items.

我100%肯定在调用之间没有插入任何行。这种模式是一致的,但是有不同数量的0项调用。我原以为这两件东西会在第一次打电话时归还。怎么一回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-06 14:45:13

您有一些分区。有些分区是空的,或者没有与筛选器匹配的项。您的扫描碰巧从一个空/不匹配的分区开始。单个调用不跨越分区边界,因此第一个检索从空/不匹配分区读取,然后从下一个分区读取。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73618030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档