DynamoDB上的部分JSON更新

时间:2016-09-19 20:50:08

标签: java json amazon-dynamodb

我有一个简单的发电机表,包含cookie和属性:

customer
cookie
attribute_1
attribute_2
...
attribute_n

现在,这些属性是可变的,需要在收到部分JSON到端点时更新。

我决定在DynamoDB中使用新的JSON类型字段(因为那是我们的主要数据存储选择),我打算将表重新整形为:

customer
cookie
attributes

其中属性只是一个JSON文档。

主要问题:

  • 我无法知道要添加哪些属性
  • 我无法知道哪些项目已经存在(除了进行额外查询外)
  • 我想避免使用超级复杂的代码来执行此操作

主要目标:

  • 在一个理想的世界中,应该有一些方法在Dynamo中有或没有一个项目,并传递主键和一些JSON,然后让DB部分更新现有的JSON。

到目前为止,我已经看过这种代码:

DynamoDB dynamo = new DynamoDB(new AmazonDynamoDBClient(...)); 
Table table = dynamo.getTable("people"); 

table.updateItem(
  new UpdateItemSpec()
      .withPrimaryKey("person_id", 123)
      .withUpdateExpression("SET document.current_city = :city")
      .withValueMap(new ValueMap().withString(":city", "Seattle")));

但是我想避免进行额外的查询(知道我是否需要创建或更新)并构建所有更新表达式。 有没有办法做到这一点?

这是一个完整的例子,以防万一:

1)在API中接收以下JSON:

{"name": "John"}

预期的发电机属性:

attributes={"name": "John"}

2)在API中接收以下JSON:

{"age": 12}

预期的发电机属性:

attributes={"name": "John", "age": 12}

等等。主键由请求cookie / customer构成。

我对此现有的希望来自于dynamo支持智能updateItem(我目前正在使用),它允许仅指定一些属性来更新或创建项目。

0 个答案:

没有答案