在 DynamoDB 中使用投影表达式 - Amazon DynamoDB

在 DynamoDB 中使用投影表达式

要从表中读取数据,您可以使用 GetItemQuery,或者 Scan。默认情况下,Amazon DynamoDB 会返回所有项目属性。要仅获取部分属性而不是全部属性,请使用投影表达式。

投影表达式是用于标识所需属性的字符串。要检索单个属性,请指定其名称。对于多个属性,名称必须以逗号分隔。

下面是一些投影表达式的示例,基于 ProductCatalog 商品来自 在 DynamoDB 中使用表达式时引用项目属性

  • 单个顶级属性。

    Title

  • 三个顶级属性。DynamoDB 检索整个 Color 设置。

    Title, Price, Color

  • 4 个顶级属性。DynamoDB 将返回 RelatedItemsProductReviews

    Title, Description, RelatedItems, ProductReviews

注意

投影表达式对预调配吞吐量消耗没有影响。DynamoDB 将依据项目大小确定消耗的容量,而不是依据返回到应用程序的数据量。

保留字和特殊字符

DynamoDB 具有保留字和特殊字符。DynamoDB 允许您使用这些保留字和特殊字符作为名称,但建议您不要这样做,因为在表达式中使用这些名称时必须使用其别名。有关完整列表,请参阅DynamoDB 中的保留字

在以下情况下,您需要使用表达式属性名称代替实际名称:

  • 属性名称位于 DynamoDB 中的保留字列表中。

  • 属性名称不符合第一个字符是 a-zA-Z,第二个字符(如果存在)是 a-ZA-Z0-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" } ] } } }