2016-07-20 224 views
0

我有一个存储用户视频的dynamodb表。 它的结构是这样的:在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 

回答

1

Dynamo不支持跨多个项目(即一次超过一个项目)的写入操作。您必须首先扫描/查询表格,或者以其他方式生成您想要更新的所有项目的列表,然后逐个更新它们。

Dynamo确实提供了一个批处理API,但这仍然只是一次将更新分组在一起的一种方法。这不是您想要实现的多项更新的代理。

相关问题