gpt4 book ai didi

java - 如何使用 Java 设置 DynamoDB 返回的匹配项的限制?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:58:50 25 4
gpt4 key购买 nike

在我的 Android 应用程序中,我想从 DynamoDB 查询数据。将有一千个匹配项目,但我只想获得其中的前 10 个。我不知道如何设置这个限制。我在文档中找到了这些行:

DynamoDB 查询和扫描 API 允许使用限制值来限制结果的大小。

在请求中,将 Limit 参数设置为您希望 DynamoDB 在返回结果之前处理的项目数。

在响应中,DynamoDB 返回Limit 值范围内的所有匹配结果。例如,如果您发出 Limit 值为 6 且没有筛选表达式的 Query 或 Scan 请求,DynamoDB 将返回表中与请求中指定的关键条件匹配的前六个项目(或仅返回表中的前六个项目没有过滤器的扫描的情况)。如果您还提供了 FilterExpression 值,DynamoDB 将返回前六个中也符合过滤要求的项目(返回的结果数将小于或等于 6)。

但是我找不到设置响应限制的方法。我找到了QueryResult的SetCount方法:

QueryResult result2 = dynamodb.query(request);
result2.setCount(5);

它说:然后Count是应用过滤器后返回的项目数

但我认为这不是我想要的。因为 DynamoDb 在调用 setCount 之前仍然会返回所有匹配项。谁能帮帮我?

最佳答案

您需要将限制应用为发送给 API 的请求的一部分,而不是响应。

我假设您提交给 dynamodb 对象的请求对象是一个 QuerySpec .您要做的是调用 withMaxResultSize在针对 API 运行查询之前传入您想要应用的限制。

但是,正如您在问题中提到的,您需要确保了解 limit 的行为,如 Limits 上的 DynamoDB 文档中所述。 :

In a response, DynamoDB returns all the matching results within the scope of the Limit value. For example, if you issue a Query or a Scan request with a Limit value of 6 and without a filter expression, DynamoDB returns the first six items in the table that match the specified key conditions in the request (or just the first six items in the case of a Scan with no filter). If you also supply a FilterExpression value, DynamoDB will return the items in the first six that also match the filter requirements (the number of results returned will be less than or equal to 6).

这意味着如果您不使用 FilterExpression,您可能没问题。但是,如果您过滤结果,您收到的结果可能会少于您的限制,因为从技术上讲,限制不是要返回的结果数量,而是 DynamoDB 可能返回的项目数量。

这听起来像是您在寻求一种方法,让 DynamoDB 在应用 FilterExpression 时将返回的结果数量限制为精确数量。不幸的是,目前 DynamoDB 无法做到这一点。

关于java - 如何使用 Java 设置 DynamoDB 返回的匹配项的限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31644605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com