有没有办法检查 DynamoDB table 中是否存在键=值?

Is there a way to check if a key=value exists in a DynamoDB table?

我想在 dynamodb table with/without 检索整个项目时检查特定键是否具有特定值。有没有办法在 Python 中使用 boto3 做到这一点?

注意:我希望将排序键与其值相匹配,并检查 table、

中是否存在该特定键值对

听起来您想仅通过排序键来获取项目。虽然这可以通过 scan 操作实现,但并不理想。

DynamoDB给了我们三种获取数据的方式:getItem、query和scan。

getItem 操作允许您使用它的主键获取单个。查询操作可以在同一分区中获取多个项目,但需要您指定分区键(以及可选的排序键)。扫描操作允许您通过指定 any 属性来获取项目。

因此,如果您想在不使用完整主键或分区键的情况下从DynamoDB 获取数据,您可以使用扫描操作。但是,使用扫描时要小心。来自文档:

The Scan operation returns one or more items and item attributes by accessing every item in a table or a secondary index.

如果不小心使用,扫描操作可能会非常低效。如果您发现自己在应用程序中频繁使用扫描 在应用程序的高流量区域,您可能需要重新组织数据模型。

Seth 所说的是 100% 准确的,但是,如果您可以添加 GSI,则可以使用 GSI 上的查询选项。您可以创建一个仅包含排序键值的 GSI,从而允许您查询与该排序键匹配的记录。你甚至可以使用相同的字段,如果你不需要任何数据,你可以只投影键,保持成本相对较低。