我有一个存储用户视频的dynamodb表。 它的结构如下:
{
"userid": 324234234234234234, // Hash key
"videoid": 298374982364723648 // Range key
"user": {
"username": "mario"
}
}
我想更新特定用户的所有视频的用户名。 可以通过简单的更新,或者我必须扫描整个表格并一次更新一个项目?
var params = {
TableName: DDB_TABLE_SCENE,
Key: {
userid: userid,
},
UpdateExpression: "SET username = :username",
ExpressionAttributeValues: { ":username": username },
ReturnValues: "ALL_NEW",
ConditionExpression: 'attribute_exists (userid)'
};
docClient.update(params, function(err, data) {
if (err) fn(err, null);
else fn(err, data.Attributes.username);
});
我收到以下错误,我认为范围键是必要的。
ValidationException: The provided key element does not match the schema
答案 0 :(得分:1)
Dynamo不支持跨多个项目的写入操作(即,一次支持多个项目)。您必须先扫描/查询表格,否则生成您要更新的所有项目的列表,然后逐个更新。
Dynamo确实提供了一个批处理API,但这仍然只是一次批量组合25个更新的方法。它不是您想要实现的多项目更新的代理。