迭代 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
我正在使用 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