在数字属性

时间:2015-08-20 13:45:32

标签: java amazon-web-services amazon-dynamodb

所以我有这个表,其中行具有两组属性中的一个。一行用一组开始它的生命,然后进入第二组(并保持这种方式直到被移除)。两个集合都有一个共同的属性。

问题在于我想将第一个属性集中的行转换为仅使用更新的第二个属性集。我不想做一个阅读,只是为了得到那个单一的共同属性。我想,如果你做了一个UpdateRequest,那么更新中没有包含的每个属性都会被删除。由于common属性是一个数字,我发现我会像这样使用ADD属性动作作弊:

new AttributeValueUpdate()
  .withAction(AttributeAction.ADD)
  .withValue(new AttributeValue().withN("0"));

根据documentation,与属性类型(Number)相关的此动作应该将值(在这种情况下为0)添加到当前属性值。但是,这与PUT操作的行为类似,因为操作后此属性的值为0。

所以问题是:

  1. ADD行动是否像我一样期待?换句话说,向属性添加0是否使其在UpdateRequest中存活?如果是这样,我可能做错了什么,因为它似乎不适合我?

  2. 假设ADD操作按预期工作,我只是误解了它的作用 - 是否还有其他方法可以在更新期间保留属性值?

1 个答案:

答案 0 :(得分:1)

updateItem API允许您部分更新项目。但是,如果主键不存在,它将插入一个项目。如果该属性不存在,则如果该属性不存在,则采用默认值0。所以我要仔细检查你的属性是否设置为0或者它不存在以确认你的结果。