use*_*829 6 updates amazon-dynamodb
我想更新 Dynamodb 中的一项,以便可以根据该项中现有属性的值设置一个属性的值。例如:我有包含以下项目的表{"id": 1, "valueone": 30}。
我想更新此项目,以便我可以添加另一个属性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"))
Run Code Online (Sandbox Code Playgroud)
我可以控制valuetwo项目中是否是新属性,或者是否已经存在具有虚拟值(例如零)。
目前, DynamoDB不支持UpdateExpression.
它仅支持加法 (+) 和减法 (-) 运算符。
添加:-
UpdateExpression : "SET total_new_val = total_val + :value",
Run Code Online (Sandbox Code Playgroud)
减法:-
UpdateExpression : "SET total_new_val = total_val - :value",
Run Code Online (Sandbox Code Playgroud)
乘法:-
UpdateExpression : "SET total_new_val = total_val * :value",
Run Code Online (Sandbox Code Playgroud)
乘法会引发以下错误:-
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4215 次 |
| 最近记录: |