投射表達式 - Amazon DynamoDB

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

投射表達式

若要從資料表讀取資料,您可以使用 GetItemQueryScan 等操作。Amazon DynamoDB 會依預設傳回所有項目屬性。若只要取得部分而非全部屬性,請使用投射表達式。

投射表達式是識別所需屬性的字串。若要擷取單一屬性,請指定其名稱。若為多個屬性,則必須以逗號分隔名稱。

以下是根據 在 DynamoDB 中使用運算式時參照項目屬性 中的 ProductCatalog 項目而來的一些投射表達式範例:

  • 單一最上層屬性。

    Title

  • 三個最上層屬性。DynamoDB 會擷取整個 Color 設定。

    Title, Price, Color

  • 四個最上層屬性。DynamoDB 會傳回 RelatedItemsProductReviews 的整個內容。

    Title, Description, RelatedItems, ProductReviews

注意

投影運算式對佈建的輸送量消耗沒有影響。DynamoDB 會根據項目大小決定使用的容量單位,而不是傳回給應用程式的資料量。

保留字和特殊字元

DynamoDB 具有保留字和特殊字元。DynamoDB 可讓您將這些保留字和特殊字元用於名稱,但我們建議您避免這樣做,因為每當您在運算式中使用這些名稱時,都必須為這些字元使用別名。如需完整清單,請參閱 DynamoDB 中的保留字

如果出現以下情況,您將需要使用表達式屬性名稱來代替實際名稱:

  • 屬性名稱位於 DynamoDB 中的保留字清單上。

  • 屬性名稱不符合第一個字元為a-zA-Z且第二個字元 (如果存在) 為a-ZA-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" } ] } } }