我遵循官方AWS指南中的教程,但没有解释的是如何查询二级索引,我自己创建的索引。那么我将在queryExpression上调用什么方法以及如何使用该方法(如果我说三个二级索引并且它们每个都应该有一个给定的查询值,我该怎么办?)
答案 0 :(得分:0)
来自AWS DynamoDB IOS开发人员指南:
http://docs.aws.amazon.com/mobile/sdkforios/developerguide/dynamodb_om.html
使用Query API可以查询表或辅助索引。您 必须在AWSDynamoDBQueryExpression中提供哈希键值。要查询 索引,还必须指定indexName。你必须指定 hashKeyAttribute如果查询具有不同的全局辅助节点 散列键。如果表或索引具有范围键,则可以选择 通过提供范围键值和条件来细化结果。该 query:expression:方法有两个参数 - 类的 生成的对象和AWSDynamoDBQueryExpression的实例。在里面 下面的例子,我们查询Books索引表来查找所有书籍 与“约翰史密斯”的作者和价格低于50:
它会是这样的:
AWSDynamoDBQueryExpression *queryExpression = [AWSDynamoDBQueryExpression new];
queryExpression.indexName = @"Author-Price-index";
queryExpression.hashKeyAttribute = @"Author";
queryExpression.hashKeyValues = @"John Smith";
queryExpression.rangeKeyConditionExpression = @"Price < :val";
queryExpression.expressionAttributeValues = @{@":val":@50};
[[dynamoDBObjectMapper query:[Book class]
expression:queryExpression]
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) {
AWSDynamoDBPaginatedOutput *paginatedOutput = task.result;
for (Book *book in paginatedOutput.items) {
//Do something with book.
}
}
return nil;
}];