TOP*_*TOP 6 java android response limit amazon-dynamodb
在我的Android应用中,我想查询DynamoDB中的数据.将有一千个匹配的项目,但我只想获得它们中的前十个.我不知道如何设置这个限制.我在文档中找到了这些行:
DynamoDB查询和扫描API允许限制值限制结果的大小.
在请求中,将Limit参数设置为您希望DynamoDB在返回结果之前处理的项目数.
在响应中,DynamoDB返回Limit值范围内的所有匹配结果.例如,如果发出限制值为6且没有过滤器表达式的查询或扫描请求,DynamoDB将返回表中与请求中指定的键条件匹配的前六项(或仅返回前六项)扫描没有过滤器的情况).如果还提供FilterExpression值,DynamoDB将返回前六个中与过滤器要求匹配的项目(返回的结果数将小于或等于6).
但我找不到设定响应限制的方法.我找到了QueryResult的方法SetCount:
QueryResult result2 = dynamodb.query(request);
result2.setCount(5);
Run Code Online (Sandbox Code Playgroud)
它说:然后Count是应用过滤器后返回的项目数
但我认为这不是我想要的.因为DynamoDb在调用setCount之前仍会返回所有匹配项.谁能帮我?
您需要将限制作为发送给API的请求的一部分,而不是响应.
我假设您提交给dynamodb对象的请求对象是QuerySpec.您要做的是调用withMaxResultSize以传递在针对API运行查询之前应用的限制.
然而,当你在你的问题中提到你需要确保你理解为对DynamoDB文档中描述的限制的行为限制:
在响应中,DynamoDB返回Limit值范围内的所有匹配结果.例如,如果发出限制值为6且没有过滤器表达式的查询或扫描请求,DynamoDB将返回表中与请求中指定的键条件匹配的前六项(或仅返回前六项)扫描没有过滤器的情况).如果还提供FilterExpression值,DynamoDB将返回前六个中与过滤器要求匹配的项目(返回的结果数将小于或等于6).
这意味着如果你没有使用FilterExpression,你可能会很好.但是,如果要过滤结果,则可能会收到少于限制的结果,因为技术上限制不是要返回的结果数,而是DynamoDB可能返回的项数.
听起来你想要一种方法让DynamoDB在应用FilterExpression的同时将它返回的结果数量限制为一个确切的数字.不幸的是,目前DynamoDB无法实现这一目标.
| 归档时间: |
|
| 查看次数: |
9071 次 |
| 最近记录: |