我有一个简单的发电机表,包含cookie和属性:
customer
cookie
attribute_1
attribute_2
...
attribute_n
现在,这些属性是可变的,需要在收到部分JSON到端点时更新。
我决定在DynamoDB中使用新的JSON类型字段(因为那是我们的主要数据存储选择),我打算将表重新整形为:
customer
cookie
attributes
其中属性只是一个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
(我目前正在使用),它允许仅指定一些属性来更新或创建项目。