Amazon dynamodb DynamoDB update_项:增加现有项的值,或对新项使用1
我尝试使用updateitem,因为它用于更新现有项目和创建新项目: 编辑现有项的属性,或向表中添加新项 如果它还不存在 我想储存: 第一次有人打开一个项目 上次有人打开物品时 项目的开口数 我有以下代码:Amazon dynamodb DynamoDB update_项:增加现有项的值,或对新项使用1,amazon-dynamodb,dynamodb-queries,Amazon Dynamodb,Dynamodb Queries,我尝试使用updateitem,因为它用于更新现有项目和创建新项目: 编辑现有项的属性,或向表中添加新项 如果它还不存在 我想储存: 第一次有人打开一个项目 上次有人打开物品时 项目的开口数 我有以下代码: table.update_item( Key={'item':"NEW"}, UpdateExpression="SET opens = if_not_exists(opens + :var1, :var0), last_ope
table.update_item(
Key={'item':"NEW"},
UpdateExpression="SET opens = if_not_exists(opens + :var1, :var0), last_open = :var2, first_open = if_not_exists(first_open, :var3)",
ExpressionAttributeValues={
':var0': "0",
':var1': "1",
':var2': '2020-04-01',
':var3': '1999-01-01'
},
ReturnValues="UPDATED_NEW"
)
新项目和现有项目出现错误,并显示
调用UpdateItem时发生ValidationException错误
操作:无效的UpdateExpression:语法错误;令牌:\+\,靠近:
\打开+:var1\
以下内容适用于现有项目,但对新项目会引发错误:
table.update_item(
Key={'item':"NEW"},
UpdateExpression="SET opens = opens + :var1, last_open = :var2, first_reachout = if_not_exists(first_open, :var3)",
ExpressionAttributeValues={
':var1': "1",
':var2': '2020-04-01',
':var3': '1999-01-01'
},
ReturnValues="UPDATED_NEW"
)
仅新的错误:
table.update_item(
Key={'item':"NEW"},
UpdateExpression="SET opens = opens + :var1, last_open = :var2, first_reachout = if_not_exists(first_open, :var3)",
ExpressionAttributeValues={
':var1': "1",
':var2': '2020-04-01',
':var3': '1999-01-01'
},
ReturnValues="UPDATED_NEW"
)
调用UpdateItem操作时发生ValidationException错误:提供的表达式引用了项中不存在的属性
我猜这意味着contacts属性,但是如果不存在,那么将其包含在if_not_exists中也不起作用。…您可以在中找到UpdateExpression语法的文档。你的问题的相关部分如下:
value ::=
operand
| operand '+' operand
| operand '-' operand
operand ::=
path | function
这意味着+只能位于表达式的顶层,不能位于函数的参数内
幸运的是,您有一个简单的解决方法。请尝试:var1+if\u not\u existsopens,:var0,而不是您尝试的if\u not\u existsopens+:var1,:var0。您使用的是什么语言或sdk?我也无法理解这一点。谢谢