我已经创建了一个表TEST,它有4列:
column1 :范围关键点
column2:排序关键字
column3: GSI
column4:法线属性
现在我想根据GSI值更新column4的值。我尝试使用以下代码,但只有在同时传递range和sort键时才有效。在我的用例中,在更新时,我将只有GSI的值,而不是范围/排序键。
Map<String, AttributeValue> key = new HashMap<>();
key.put(“column1”, new AttributeValue().withS(column1Value));
key.put(“column2”, new AttributeValue().withS(column2Value));
Map<String, AttributeValue> attributeValues = new HashMap<>();
attributeValues.put(“column4”, new AttributeValue().withS(column4Value));
attributeValues.put(“column3”, new AttributeValue().withS(column3Value));
UpdateItemRequest updateItemRequest = new UpdateItemRequest()
.withTableName(emailsTableName)
.withKey(key)
.withUpdateExpression(“set column4 = :column4”)
.withConditionExpression(“column3 = :column3”)
.withExpressionAttributeValues(attributeValues);
UpdateItemResult updateItemResult = dynamoDBClient.updateItem(updateItemRequest);是否可以仅基于GSI更新Dynamo DB的列?
发布于 2020-02-05 02:34:45
GSI用于查询数据,因此要执行此操作,首先需要使用GSI查询数据,然后使用GSI的结果通过响应中的键了解要更新的记录。请记住,对于GSI,它可能是记录,复数。不能保证唯一性。
https://stackoverflow.com/questions/60063169
复制相似问题