如何在AWS Dynamodb中增加数字?
指南说保存项目时只需重新保存: http://docs.aws.amazon.com/mobile/sdkforios/developerguide/dynamodb_om.html
但是我试图使用一个计数器,许多用户可能同时更新。
其他文档告诉我使用和UpdateItem操作,但我找不到一个很好的例子。
http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html
但是,我找不到实现表达式的方法。将来我将为数组和地图添加值。这会是一样的吗?我的代码在Obj C
目前我的代码如下:
AWSDynamoDBUpdateItemInput *updateItemInput = [AWSDynamoDBUpdateItemInput new];
updateItemInput.tableName = @"TableName";
updateItemInput.key = @{
UniqueItemKey:@"KeyValue"
};
updateItemInput.updateExpression = @"SET counter = counter + :val";
updateItemInput.expressionAttributeValues =@{
@":val":@1
};
答案 0 :(得分:1)
您似乎错过了实际发出更新项请求的最后一段代码:
AWSDynamoDB *dynamoDB = [AWSDynamoDB defaultDynamoDB];
[[dynamoDB updateItem:updateItemInput]
continueWithBlock:^id(AWSTask *task) {
if (task.error) {
NSLog(@"The request failed. Error: [%@]", task.error);
}
if (task.exception) {
NSLog(@"The request failed. Exception: [%@]", task.exception);
}
if (task.result) {
//Do something with result.
}
return nil;
}];
答案 1 :(得分:0)
在DynamoDB中,如果要增加任何属性/字段的值,可以使用带有操作选项ADD的UpdateItemRequest。我在android中使用这种方法会更新该字段的现有值。让我分享一下代码段。您可以使用添加,删除,放置等任何操作。
.....
AttributeValue viewcount = new AttributeValue().withS("100");
AttributeValueUpdate attributeValueUpdate = new AttributeValueUpdate().withAction(AttributeAction.ADD).withValue(viewcount);
updateItems.put(UploadVideoData.FIELD_VIEW_COUNT, attributeValueUpdate);
UpdateItemRequest updateItemRequest = new UpdateItemRequest().withTableName(UploadVideoData.TABLE_NAME)
.withKey(primaryKey).withAttributeUpdates(updateItems);
UpdateItemResult updateItemResult = amazonDynamoDBClient.updateItem(updateItemRequest);
....
您可以看到上面的代码会将100个计数添加到该字段的现有值中。
此代码适用于Android,但该技术将保持不变。
谢谢。