繁体   English   中英

如何限制来自 AWS DynamoDB 扫描的项目数量?

[英]How to limit the number of items from an AWS DynamoDB scan?

我正在使用 node.js。

如果你看这个例子:

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html

它说:

aws dynamodb scan \
    --table-name Movies \
    --projection-expression "title" \
    --filter-expression 'contains(info.genres,:gen)' \
    --expression-attribute-values '{":gen":{"S":"Sci-Fi"}}' \
    --page-size 100  \
    --debug

其中page-size限制结果项的数量:

通常,AWS CLI 会自动处理分页; 但是,在此示例中,CLI 的 --page-size 参数限制了每页的项目数。

但是,如果您阅读 Node.js AWS 文档:

https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#scan-property

没有与“页面大小”相关的参数。

( Only Limit限制扫描的项目数量,不返回)。

如何限制退回商品的数量(满足我的条件)?

aws dynamodb scan \
    --table-name Movies \
    --projection-expression "title" \
    --filter-expression 'contains(info.genres,:gen)' \
    --expression-attribute-values '{":gen":{"S":"Sci-Fi"}}' \
    --page-size 100  \
    --debug

你认为这会做什么:“读取整个表,找到满足过滤器的行,然后返回最多 100 个”

Dynamo 做什么:“读取 100 行,找到满足过滤器的行,并返回它们”

我认为你需要一个索引:)

您似乎误读了文档,

限制结果集中的项目数

扫描操作使您可以限制返回结果中的项目数。 为此,请将Limit参数设置为所需的最大项目数。

例如,假设您扫描一个限制值为6且没有过滤器表达式的表。 扫描结果将包含表中与请求的关键条件表达式匹配的前六个项目。

现在,假设您向“扫描”添加了一个过滤器表达式。 在这种情况下,DynamoDB会将过滤器表达式应用于返回的六个项目,并丢弃不匹配的项目。 最终的扫描结果将包含6个或更少的项目,具体取决于过滤的项目数。

在同一链接上

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Scan.html

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM