gpt4 book ai didi

amazon-dynamodb - Dynamodb 基于另一个更新属性

转载 作者:行者123 更新时间:2023-12-04 07:12:31 26 4
gpt4 key购买 nike

我想更新 Dynamodb 中的一个项目,以便我可以根据该项目中现有属性的值设置一个属性的值。例如:我有一个包含以下项目 {"id": 1, "valueone": 30} 的表。

我想更新这个项目,以便我可以添加另一个属性 valuetwo,其值是 valueone 的两倍:{"id": 1, "valueone": 30, "valuetwo": 60}
像这样,但不确定如何在 ExpressionAttributeValues 中表示 valueone:

table.update_item(Key={'id': 1}, UpdateExpression="set vtwo = :two * :r", ExpressionAttributeValues={':r': valueone, ':two': 2},ReturnValues="ALL_NEW"))

我可以控制 valuetwo 是项目中的一个新属性还是已经存在一个虚拟值(比如零)。

最佳答案

目前,DynamoDB 不支持 UpdateExpression 中的 "* - Multiply (or)/- Division" 算术运算符。

它仅支持加法 (+) 和减法 (-) 运算符。

添加:-

UpdateExpression : "SET total_new_val = total_val + :value",

减法:-
UpdateExpression : "SET total_new_val = total_val - :value",

乘法:-
UpdateExpression : "SET total_new_val = total_val * :value",    

乘法抛出以下错误:-
Unable to update item. Error JSON: {
"message": "Invalid UpdateExpression: Syntax error; token: \"*\", near: \"tota
l_val * :value\"",
"code": "ValidationException",
"time": "2017-02-07T11:32:41.478Z",
"requestId": "64f36024-7251-40af-98ee-e9cef854e94b",
"statusCode": 400,
"retryable": false,
"retryDelay": 0
}

关于amazon-dynamodb - Dynamodb 基于另一个更新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42078191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com