Java DynamoDB上的部分JSON更新

Java DynamoDB上的部分JSON更新,java,json,amazon-dynamodb,Java,Json,Amazon Dynamodb,我有一个简单的dynamo表,其中包含cookies和属性: customer cookie attribute_1 attribute_2 ... attribute_n 现在,这些属性是可变的,需要在通过和端点接收部分JSON时进行更新 我决定在DynamoDB中使用新的JSON类型字段(因为这是我们主要的数据存储选择),我打算将表重塑为: customer cookie attributes 其中属性只是一个JSON文档 主要问题: 我无法知道要添加哪些属性 我无法确定哪些项目已经存

我有一个简单的dynamo表,其中包含cookies和属性:

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"}
{"age": 12}
预期的发电机属性:

attributes={"name": "John"}
attributes={"name": "John", "age": 12}
2) 在API中接收以下JSON:

{"name": "John"}
{"age": 12}
预期的发电机属性:

attributes={"name": "John"}
attributes={"name": "John", "age": 12}
等等。主键由请求cookie/customer构造


我对这一现状的希望来自这样一个事实:dynamo支持smart
updateItem
(我目前正在使用),它只允许指定一些属性来更新或创建一个项目。

当你说new JSON type字段时,你指的是文档数据类型(映射或列表)?@ConceptQuest是的,没错。我还看到了一个
withJson()
作为
项的输入当你说new JSON type字段时,你是指文档数据类型(映射还是列表)?@onceptQuest是的,没错。我还看到了一个
withJson()
作为
类的输入