4

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryingJavaDocumentAPI.html中给出的第一个示例根据 http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/返回ItemCollection QueryAndScan.html#Pagination我们需要获取 lastevaluatedkey 并再次执行查询,但是从 dynamoDb.getTable("tableName").query(keyattribute) 返回的 ItemCollection 没有任何 getlastevaluatedkey 也 ItemCollection 文档指出 n/如果跨页面边界进行迭代,将进行 w 调用,因此我们是否必须再次调用,如http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Pagination中给出的那样



4

2 回答 2

3

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();

我希望这有帮助。

于 2016-02-01T16:02:30.260 回答
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);
             }
}

然后你可以对返回的数据做你需要做的事情

于 2020-01-11T20:30:54.317 回答