如何在Dynamo DB表上使用JSON有效内容执行updateItem操作

时间:2015-02-26 17:57:31

标签: java json amazon-dynamodb

Dynamo DB文档API允许使用json有效负载进行放置操作

Item item = Item.fromJSON(payload);
table.putItem(item);

但是,我找不到使用Json有效负载执行updateItem的类似方法。

是否有Dynamo DB支持?

3 个答案:

答案 0 :(得分:2)

以下是关于如何在Javascript中执行此操作的代码段。

let updateExpression = 'SET ';
let expressionAttributeValues = {};

const keys = Object.keys(payload);
for (const key of keys) {
  updateExpression += `${key}=:${key},`;
  expressionAttributeValues[`:${key}`] = payload[key];
}
updateExpression=updateExpression.slice(0,-1);

let params = {  
  TableName : 'your_table_name',
  Key: {
    id: id
  }, 
  UpdateExpression : updateExpression,
  ExpressionAttributeValues : expressionAttributeValues,
  ReturnValues: "ALL_NEW"
}

db.update(params,(err, result)=>{});

答案 1 :(得分:1)

我最近一直在努力使用地图。

UpdateItemOutcome updateItemOutcome = table.updateItem(
                new UpdateItemSpec()
                        .withPrimaryKey("id", "yourId")                            
                        .withUpdateExpression("SET document.field = :field")
                        .withValueMap(new ValueMap()
                                        .withMap(":field", "map of key value pairs that will get serialized to json")));

答案 2 :(得分:0)

UpdateItemSpec当前不接受Item作为输入 - 您必须首先解析json内容(可能是通过Item.fromJSON),然后使用AttributeUpdate或UpdateExpression指定每个单独字段的更新操作( SET,ADD等)

以下是使用UpdateExpression更新项目http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/JavaDocumentAPIItemCRUD.html#JavaDocumentAPIItemUpdate

的文档