2016-04-27 9 views
2

私はdynamodbでJSONArrayを更新するには? (JAVA SDK)は

"info" : { 
     "nn": { 
      "nnn": [{ 
       "nnnn": "bb" 
      }] 
     }, 
     "ln": "zheng1", 
     "fn": "franky", 
     "sn": [{ 
      "aa": "zheng2" 
     }] 
    } 

私はエラーがlist_appendされますUpdateItemSpec

List<JSONObject> li= new ArrayList<JSONObject>(); 
    JSONObject j = new JSONObject(); 
    j.append("kk","kkkk"); 
    li.add(j); 

UpdateItemSpec updateItemSpec = new UpdateItemSpec() 
     .withPrimaryKey("Age", age, "Name", name) 
     .withExpressionSpec(new ExpressionSpecBuilder() 
        .addUpdate(ExpressionSpecBuilder.S("phone").set("0900000222")) 
        .addUpdate(ExpressionSpecBuilder.S("info.ln").set("zheng32")) 
        .addUpdate(ExpressionSpecBuilder.list_append("info.sn", li)) // ERRO 
        .withCondition(ExpressionSpecBuilder.N("weight").eq(82)) 
        .buildForUpdate()) 
     .withReturnValues(ReturnValue.UPDATED_NEW); 

でinfo.snを更新したいと思い、以下のようDynamoDBの上JSONObject店を持って、私は見つけることができませんJSONArrayを更新する方法は、誰かが助けることができますか?

答えて

0

This answerが役立ちます。だからあなたのアップデート項目の仕様は

UpdateItemSpec updateItemSpec = new UpdateItemSpec() 
      .withPrimaryKey("Age", age, "Name", name) 
      .withNameMap(new NameMap().with("#P", "info.sn")) 
      .withValueMap(new ValueMap() 
        .withList(":val", li) //list of map 
        .withList(":empty_list", new ArrayList<>())) 
      .withUpdateExpression("SET #P = list_append(if_not_exists(#P, :empty_list), :val)"); 

を次のようになります。私が最初にExpressionSpecBuilderを使用してみましたが、私はあまりにも

失敗しました
関連する問題