基于 GSI 更新 Dynamo DB 列
Update Dynamo DB column based on GSI
我创建了一个 table 测试,它有 4 列:
第 1 列:范围键
第 2 列:排序键
第 3 列:GSI
第4列:普通属性
现在我想根据 GSI 值更新 column4 的值。我尝试使用以下代码,但仅当我同时传递范围和排序键时它才有效。在更新时的用例中,我只有 GSI 的值而不是 range/sort 键。
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 的列?
GSI 用于查询数据,因此要执行此操作,您需要先使用 GSI 查询数据,然后使用 GSI 中的键使用查询结果来了解要更新的记录回复。请记住,对于 GSI,它可能是复数形式的记录。不保证唯一性。
我创建了一个 table 测试,它有 4 列:
第 1 列:范围键
第 2 列:排序键
第 3 列:GSI
第4列:普通属性
现在我想根据 GSI 值更新 column4 的值。我尝试使用以下代码,但仅当我同时传递范围和排序键时它才有效。在更新时的用例中,我只有 GSI 的值而不是 range/sort 键。
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 的列?
GSI 用于查询数据,因此要执行此操作,您需要先使用 GSI 查询数据,然后使用 GSI 中的键使用查询结果来了解要更新的记录回复。请记住,对于 GSI,它可能是复数形式的记录。不保证唯一性。