Обновление колонки Dynamo DB на основе GSI - PullRequest
0 голосов
/ 04 февраля 2020

Я создал таблицу TEST, которая имеет 4 столбца:

column1: ключ диапазона

column2: ключ сортировки

column3: GSI

column4 : обычный атрибут

Теперь я хочу обновить значение column4 на основе значения GSI. Я попытался использовать следующий код, но он работает только тогда, когда я передаю и диапазон, и ключ сортировки В моем случае использования во время обновления у меня было бы только значение 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);

Возможно ли обновить столбец Dynamo DB только на основе GSI?

1 Ответ

4 голосов
/ 04 февраля 2020

GSI предназначены для запроса данных, поэтому для этого вам нужно сначала запросить данные в GSI, а затем использовать полученные результаты, чтобы узнать, какие записи обновлять, используя ключи в ответе. Имейте в виду, что с GSI это потенциально записи, множественное число. Там нет гарантии уникальности.

...