RJN*_*WLY 9 java amazon-web-services amazon-dynamodb
我有一个仅包含哈希键的表,现在用例需要创建一个以creationDate 作为范围键的GSI。
我通过在所有新项目中将creationDate 值指定为数字来实现此目的。
但是该表已经有大约 5000 个条目没有为creationDate 设置值,并且这些条目不包含在 GSI 上的扫描或查询操作的结果中。作为此问题的解决方案,我想对当前没有 createDate 值的所有条目使用默认值。如何在 Java 中使用 dynamodbmapper 来执行此操作,或者有没有办法使用 AWS 控制台来执行此操作?
现有项目必须单独更新。
如果给定哈希键的属性不存在,则更新项目:-
如果该属性已存在,则以下示例不执行任何操作;否则,它将属性设置为默认值。
UpdateItemSpec updateItemSpec = new UpdateItemSpec().withPrimaryKey("orderId", "75246c41-02c7-48c4-8d4c-d202483e6d2b")
.withReturnValues(ReturnValue.ALL_NEW).withUpdateExpression("set #createDate = if_not_exists (#createDate, :val1)")
.withNameMap(new NameMap().with("#createDate", "createDate"))
.withValueMap(new ValueMap().withNumber(":val1", 1));
UpdateItemOutcome outcome = table.updateItem(updateItemSpec);
Run Code Online (Sandbox Code Playgroud)