Boto3 扫描未扫描整个 table

Boto3 scan not scanning whole table

我想通过以下扫描从 DynamoDB table 中获取对象列表

video_list = video_table.scan(
        FilterExpression="attribute_not_exists(title)",
)

但是我收到了这样的东西

{'Items': [], 'Count': 0, 'ScannedCount': 948 ...}

通过从 DynamoDB 控制台执行完全相同的扫描,我得到了很多结果。

我已正确连接到 table,因为我之前收到过结果,最近才停止接收。

脚本在 Lambda 函数中,使用无服务器框架部署。

CountScannedCount 表示 DynamoDB 读取了 948 个项目,但其中 none 个项目与 attribute_not_exists(title) 匹配。我可以想到为什么会发生这种情况的两种可能性:

  1. 也许您的查询中有错字 - 也许属性名称 title 拼错了?也许您指的是 attribute_exists,而不是 attribute_not_exists

  2. 一如既往,Scan 操作被分页。此操作仅读取一页,共 948 个项目,并且 none 个匹配的特定项目。这 948 个项目是整个数据库,还是只是更大数量的前 948 个项目?如果是后者,完全有可能(但我不知道你的情况有多大可能......)由于纯粹的运气,前948项都不匹配,你必须继续阅读下一页才能得到任何比赛。