如何在查询aws dynamodb表中获得所有结果?

时间:2016-01-29 10:45:11

标签: amazon-web-services amazon-dynamodb aws-java-sdk

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryingJavaDocumentAPI.html中给出的第一个示例,它返回一个ItemCollection

根据{{​​3}},我们需要获取lastevaluatedkey并再次执行查询,但是没有任何getlastevaluatedkey用于从dynamoDb.getTable(“tableName”)返回的ItemCollection。query(keyattribute)
<登记/> 此外,ItemCollection文档指出,如果在页面边界上进行迭代,将进行n / w调用,因此我们必须再次进行调用,如http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Pagination中所示,或者不是

2 个答案:

答案 0 :(得分:2)

getLastEvaluatedKey是QueryResult(或ScanResult)的方法。

在您引用的示例中,使用了QueryOutcome的集合,绕过了QueryResult。 要获取最后一个评估密钥,您可以尝试执行此操作

 QueryRequest request = new QueryRequest();
 request.setTableName(tablename);
 QueryResult result = dynamoDB.query(request);
 ItemCollection<QueryOutcome> items = result.getItems();
 Map<String,AttributeValue> lastKey = result.getLastEvaluatedKey();

我希望这会有所帮助。

答案 1 :(得分:0)

拥有地图后-您可以进一步处理返回的数据。例如,在此示例中,键名和数据被推入两个 ArrayList 对象:

 ArrayList<String> keys = new ArrayList<String>();
  ArrayList<String> keyVals = new ArrayList<String>();

  for (Map<String, AttributeValue> item : result.getItems()) {

        Set<String> key = item.keySet();
        Collection<AttributeValue> values = item.values();

       for (Iterator<String> it = key.iterator(); it.hasNext(); ) {
               String f = it.next();
                System.out.println(f);
               keys.add(f);
        }

        for (Iterator<AttributeValue> it2 = values.iterator(); it2.hasNext(); ) {
               AttributeValue v1 = it2.next();
               String yy= v1.getS();
               keyVals.add(yy);
             }
}

然后您就可以对返回的数据进行处理