DynamoDB 没有batchUpdate
直接API。它确实有batch get item
and batch write item
API.
但是,您可以使用batchWriteItem
用于更新项目的 API。
1)使用下面的BatchWriteItemSpec
构造请求的类
批量写入项目规范 https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/document/spec/BatchWriteItemSpec.html
2)使用下面的TableWriteItems
类来构造需要更新的项目
表写入项 https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/document/TableWriteItems.html
3)使用下面的addItemToPut
方法(或withItemsToPut
) 添加新属性
添加要放置的项目 https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/document/TableWriteItems.html#addItemToPut-com.amazonaws.services.dynamodbv2.document.Item-
The batchWriteItem
如果该项目(即分区键)不可用,API 将创建一个新项目。如果分区键可用,它将更新现有项目。您的用例属于此类别。
代码示例:-
files- 是表名
fileName- 是分区键
转录新- 添加新属性(或者也可以更新现有属性值)
DynamoDB dynamoDB = new DynamoDB(dynamoDBClient);
Item itemUpdate1 = new Item();
itemUpdate1.withKeyComponent("fileName", "file1")
.withString("transcriptionnew", "new value");
Item itemUpdate2 = new Item();
itemUpdate2.withKeyComponent("fileName", "file2")
.withString("transcriptionnew", "new value");
TableWriteItems tableWriteItems = new TableWriteItems("files").withItemsToPut(itemUpdate1, itemUpdate2);
BatchWriteItemSpec batchWriteItemSpec = new BatchWriteItemSpec().withTableWriteItems(tableWriteItems);
BatchWriteItemOutcome batchWriteItemOutCome = dynamoDB.batchWriteItem(batchWriteItemSpec);
if (batchWriteItemOutCome.getUnprocessedItems().isEmpty()) {
//All items are processed
return true;
}