Amazon dynamodb DynamoDb Java API-计数器增量上不存在时插入
我试图插入的项目,如果它不存在,并设置其计数器为1或增量计数器一,当它存在,但似乎不工作 以下是我迄今为止所做的工作:Amazon dynamodb DynamoDb Java API-计数器增量上不存在时插入,amazon-dynamodb,Amazon Dynamodb,我试图插入的项目,如果它不存在,并设置其计数器为1或增量计数器一,当它存在,但似乎不工作 以下是我迄今为止所做的工作: UpdateItemSpec updateItemSpec = new UpdateItemSpec() .withPrimaryKey("Id", Id) .withReturnValues(ReturnValue.ALL_NEW) .withUpdateExpression("set #c = if_not_exists(#c = :val, #c
UpdateItemSpec updateItemSpec = new UpdateItemSpec()
.withPrimaryKey("Id", Id)
.withReturnValues(ReturnValue.ALL_NEW)
.withUpdateExpression("set #c = if_not_exists(#c = :val, #c + :val)")
.withNameMap(new NameMap()
.with("#c", "counter"))
.withValueMap(new ValueMap()
.withNumber(":val", 1));
当我将更新表达式更改为set#c=#c+:val
时,它会更新现有项,但如果不存在,则不会插入新项
set#c=:val
似乎对exist和not exist都有效,但这不是我需要的。您可以通过一个UpdateItem调用创建和更新项目。
UpdateExpression应该是
ADD#c:val
,因为DynamoDB在对尚不存在的项的ADD操作中假装一个数字的值为零。在这里找到了答案这是正确的更新表达式ADD#c:val下面的问题,上面的as代码是:。withUpdateExpression(“ADD#c:val)”)