2016-05-24 18 views
0

ここでは、データ構造の設計中に提起される質問があります。現在、次のようなデータがあります。DynamoDBでの更新操作

class { 
    private String id; 
    private Map<String, Object> map; 
    ... 
} 

マップに新しいエントリを頻繁に追加する操作があります。私は、データをDynamoDBから最初にフェッチし、新しいエントリをマップに追加し、変更されたデータでDB更新を行うかどうかを疑問に思っていますか? (これがMongoのアップデートの仕組みです)そうでなければ、データ構造の設計は良くありません。

答えて

0

はい、まずDynamoDBからデータをフェッチしてから、オブジェクトをマップして保存するために新しいエントリを追加する必要があります。

オブジェクトのタイプがListの場合は、既存のリストに値を追加できます。

List<String> nameList = new ArrayList<>(); 
nameList.add("1"); 
UpdateItemSpec updateItemSpec = new UpdateItemSpec().withPrimaryKey("Id", testId).withReturnValues(ReturnValue.ALL_NEW).withUpdateExpression("set #Names = list_append (#Names, :val1)").withNameMap(new NameMap().with("#Names", "Names")) 
      .withValueMap(new ValueMap().withList(":val1", nameList)); 
UpdateItemOutcome outcome = table.updateItem(updateItemSpec); 
+0

ありがとうございました。私たちはデータ構造を再設計する必要があります。 – TeeKai

関連する問題