如何在DynamoDB for GSI中为范围条件创建属性值

时间:2017-03-22 03:34:55

标签: java amazon-dynamodb

我想在DynamoDB中搜索GSI。但是我想用KeyConditionExpression进行搜索。在这种情况下,当我收到错误时,我将无法通过RangeKeyCondition进行搜索:The range key conditions can only be specified when the key condition expression is not specified.

我认为解决这个问题的方法是使用withExpressionAttributeValues,但我不确定如何将它用于范围条件。我没有找到任何例子。

1 个答案:

答案 0 :(得分:0)

AWS文档提供了有关如何使用KeyConditionExpression here的完整示例。您需要指定索引名称并使用Index而不是Table对象。

DynamoDB dynamoDB = new DynamoDB(
    new AmazonDynamoDBClient(new ProfileCredentialsProvider()));
Index index = dynamoDB.getTable("Reply").getIndex("IndexName");
QuerySpec spec = new QuerySpec()
    .withKeyConditionExpression("Id = :v_id")
    .withValueMap(new ValueMap()
        .withString(":v_id", "Amazon DynamoDB#DynamoDB Thread 1"));
ItemCollection<QueryOutcome> items = index.query(spec);