Я хочу обновить элемент в Dynamodb, чтобы я мог установить значение одного атрибута на основе значения существующего атрибута в этом элементе. Например: у меня есть таблица со следующим элементом {"id": 1, "valueone": 30}
.Атрибут обновления Dynamodb на основе другого
Я хочу обновить этот пункт таким образом, что я могу добавить еще один атрибут valuetwo
, значение которого в два раза превышает valueone
: {"id": 1, "valueone": 30, "valuetwo": 60}
Что-то вроде этого, но не уверен, как представить valueone
в ExpressionAttributeValues:
table.update_item(Key={'id': 1}, UpdateExpression="set vtwo = :two * :r", ExpressionAttributeValues={':r': valueone, ':two': 2},ReturnValues="ALL_NEW"))
Я могу контролировать, является ли valuetwo
новым атрибутом в элементе или уже существует с фиктивным значением (скажем, 0).
Есть ли способ, чтобы обойти это ограничение, делая что-то вроде этого: 'table.update_item (Key = { 'идентификатор': 1}, UpdateExpression =" набор vtwo =: r ", ExpressionAttributeValues = {': r': valueone * 2}, ReturnValues =" ALL_NEW "))' – user2703829