DynamoDB 查询不同的属性值

DynamoDB Query distinct attribute values

我正在尝试查询 DynamoDB 并在 SQL 中获得类似于 select distinct(address) from ... 的结果。

我知道 DynamoDB 是一个面向文档的数据库,也许我需要更改数据结构。

我试图避免先获取所有数据然后过滤。

我的数据是这样的:

Attribute Datatype
ID String
Var1 Map
VarN Map
Address String

所以我想获取整个table中的不同地址。

怎么做才是最好的方法?

很遗憾,没有。您需要 Scan 整个 table(您可以使用 ProjectionExpressionAttributesToGet 选项来仅询问“地址”属性,但无论如何您都需要付费用于扫描 table).

的全部内容

如果您需要经常进行此扫描,您可以添加一个二级索引,该索引 仅投射 键和“地址”属性,以降低扫描成本。但不幸的是,使用分区键为“地址”的 GSI 不会 使您能够消除重复项:每个分区仍将包含一个重复项目的列表,不幸的是,没有办法只列出索引中的不同分区键 - Scan索引将多次为您提供相同的分区键,因为该分区中有很多项目。