2016-07-20 12 views
0

私はユーザーのビデオを格納するdynamodbテーブルを持っています。私は、特定のユーザーのすべての動画のユーザー名を更新したい複数のアイテムをDynamoDbの同じハッシュキーで更新する

{ 
    "userid": 324234234234234234, // Hash key 
    "videoid": 298374982364723648 // Range key 
    "user": { 
     "username": "mario" 
    } 
} 

: それは、このように構成されます。 簡単な更新で可能ですかまたはは完全なテーブルを1回更新してください

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

ダイナモは、複数のアイテム(つまり、一度に複数のアイテム)にまたがる書き込み操作をサポートしていません。最初にテーブルをスキャン/クエリするか、更新するすべてのアイテムのリストを生成して、それを1つずつ更新する必要があります。

Dynamoでは一括処理APIを提供していますが、それでも一度に25個のバッチで更新情報をグループ化することができます。これは、あなたが達成しようとしているような複数アイテムの更新用のプロキシではありません。

関連する問題