2016-07-20 189 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,但這仍然只是一次將更新分組在一起的一種方法。這不是您想要實現的多項更新的代理。

相關問題