【问题标题】:DynamoDb Java API - Insert if does not exist on counter incrementDynamoDb Java API - 如果计数器增量不存在则插入
【发布时间】:2019-06-12 12:11:12
【问题描述】:

我正在尝试插入不存在的项目并将其计数器设置为 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));

当我将更新表达式更改为 set #c = #c + :val 时,它会更新现有项目,但如果新项目不存在则不会插入。

set #c = :val 似乎对存在和不存在都有效,但这不是我需要的。

【问题讨论】:

标签: amazon-dynamodb


【解决方案1】:

您可以通过一次 UpdateItem 调用来创建和更新项目。 UpdateExpression 将是 ADD #c :val,因为 DynamoDB 在对尚不存在的项目进行 ADD 操作时假装 Number 的值为零。

【讨论】:

  • 下面的问题,上面的代码是:.withUpdateExpression("ADD #c :val)")
猜你喜欢
  • 2018-10-12
  • 2023-03-17
  • 2015-05-03
  • 2018-09-17
  • 2017-04-24
  • 2012-06-20
  • 2013-07-23
  • 2012-02-14
  • 1970-01-01
相关资源
最近更新 更多