我试图插入项目,如果它不存在并将其计数器设置为1或在计数器存在时将计数器加1,但它似乎不起作用...
这是我到目前为止所做的:
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));
当我更改更新表达式以设置#c = #c +:val时,它会更新现有项目,但如果它不存在则不会插入新项目。
设置#c =:val似乎既可以存在又不存在,但这不是我需要的。
答案 0 :(得分:3)
您可以使用一个UpdateItem调用创建和更新项目。
UpdateExpression将为ADD #c :val
,因为DynamoDB假装数字的值在ADD操作中对于尚不存在的项目为零。