迭代 dynamodb 分区键

iteration over dynamodb partition keys

我正在使用 AWS.DynamoDB.DocumentClient。我想遍历项目并有条件地更新它们。

我有一个 table,其中包含 4000 个项目。当我扫描 table 时,即使我使用 ProjectionExpression,我也只能得到 480 个结果。这是因为扫描大小限制 (1 MB)。我很确定如果我只获得分区键,它将小于 1 MB。

有一些关于扫描特定项目的类似问题。但这不是我奋斗的目标。我该怎么做才能列出 table 的所有分区键?谢谢

这是我的扫描操作;

docClient.scan({
  TableName: "Recipes",
  "ProjectionExpression": "#key",
  "ExpressionAttributeNames": {
    "#key": "id"
   }
 }, async (err, recipes) => {
   console.log("scanned recipes:" + recipes.Items.length)
   //output: 477 (but the list have 4000 items)
 }

你能展示一下你试过但不适合你的 scan 操作吗?

以下对我有用(我的分区键名为 PK)


ddbClient.scan(
  {
    "TableName": "<MY TABLE NAME>",
    "ProjectionExpression": "#PK,
    "ExpressionAttributeNames": {
      "#PK": "PK"
    }
  }
)

请记住,DynamoDB 在计算 1MB 限制时会考虑整个项目大小,即使您使用投影表达式将响应限制为仅几个属性也是如此。如果您的 scan 结果 returns 和 LastEvaluatedKey,您就知道 DynamoDB 正在对结果进行分页。

我在纪录片上找到了解决办法。 ExclusiveStartKey 就是答案。 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.04.html