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(您可以使用 ProjectionExpression
或 AttributesToGet
选项来仅询问“地址”属性,但无论如何您都需要付费用于扫描 table).
的全部内容
如果您需要经常进行此扫描,您可以添加一个二级索引,该索引 仅投射 键和“地址”属性,以降低扫描成本。但不幸的是,使用分区键为“地址”的 GSI 不会 使您能够消除重复项:每个分区仍将包含一个重复项目的列表,不幸的是,没有办法只列出索引中的不同分区键 - Scan
索引将多次为您提供相同的分区键,因为该分区中有很多项目。
我正在尝试查询 DynamoDB 并在 SQL 中获得类似于 select distinct(address) from ...
的结果。
我知道 DynamoDB 是一个面向文档的数据库,也许我需要更改数据结构。
我试图避免先获取所有数据然后过滤。
我的数据是这样的:
Attribute | Datatype |
---|---|
ID | String |
Var1 | Map |
VarN | Map |
Address | String |
所以我想获取整个table中的不同地址。
怎么做才是最好的方法?
很遗憾,没有。您需要 Scan
整个 table(您可以使用 ProjectionExpression
或 AttributesToGet
选项来仅询问“地址”属性,但无论如何您都需要付费用于扫描 table).
如果您需要经常进行此扫描,您可以添加一个二级索引,该索引 仅投射 键和“地址”属性,以降低扫描成本。但不幸的是,使用分区键为“地址”的 GSI 不会 使您能够消除重复项:每个分区仍将包含一个重复项目的列表,不幸的是,没有办法只列出索引中的不同分区键 - Scan
索引将多次为您提供相同的分区键,因为该分区中有很多项目。