在 DynamoDB 中使用投影表达式
要从表中读取数据,您可以使用 GetItem
、Query
,或者 Scan
。默认情况下,Amazon DynamoDB 会返回所有项目属性。要仅获取部分属性而不是全部属性,请使用投影表达式。
投影表达式是用于标识所需属性的字符串。要检索单个属性,请指定其名称。对于多个属性,名称必须以逗号分隔。
下面是一些投影表达式的示例,基于 ProductCatalog
商品来自 在 DynamoDB 中使用表达式时引用项目属性:
-
单个顶级属性。
Title
-
三个顶级属性。DynamoDB 检索整个
Color
设置。Title, Price, Color
-
4 个顶级属性。DynamoDB 将返回
RelatedItems
和ProductReviews
。Title, Description, RelatedItems, ProductReviews
注意
投影表达式对预调配吞吐量消耗没有影响。DynamoDB 将依据项目大小确定消耗的容量,而不是依据返回到应用程序的数据量。
保留字和特殊字符
DynamoDB 具有保留字和特殊字符。DynamoDB 允许您使用这些保留字和特殊字符作为名称,但建议您不要这样做,因为在表达式中使用这些名称时必须使用其别名。有关完整列表,请参阅DynamoDB 中的保留字。
在以下情况下,您需要使用表达式属性名称代替实际名称:
-
属性名称位于 DynamoDB 中的保留字列表中。
-
属性名称不符合第一个字符是
a-z
或A-Z
,第二个字符(如果存在)是a-Z
、A-Z
或0-9
的要求。 -
属性名称包含 #(哈希)或 :(冒号)。
以下 AWS CLI 示例介绍了如何将投影表达式与 GetItem
运算一起使用。此投影表达式检索顶级标量属性 (Description
),列表中的第一个元素 (RelatedItems[0]
) 和嵌套在地图中的列表 (ProductReviews.FiveStar
)。
aws dynamodb get-item \ --table-name ProductCatalog \ --key '"Id": { "N": "123" } \ --projection-expression "Description, RelatedItems[0], ProductReviews.FiveStar"
对于此示例,将返回以下 JSON。
{ "Item": { "Description": { "S": "123 description" }, "ProductReviews": { "M": { "FiveStar": { "L": [ { "S": "Excellent! Can't recommend it highly enough! Buy it!" }, { "S": "Do yourself a favor and buy this." } ] } } }, "RelatedItems": { "L": [ { "N": "341" } ] } } }