在 DynamoDB 中使用運算式時參考項目屬性 - Amazon DynamoDB

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

在 DynamoDB 中使用運算式時參考項目屬性

本節說明如何在 Amazon DynamoDB 中的表達式內參考項目屬性。您可以使用任何屬性,即使該位於多個清單和映射的深層巢狀結構中也一樣。

範例項目: ProductCatalog

本頁的範例使用 ProductCatalog 資料表中的下列範例項目。(此資料表會在 用於 DynamoDB 的範例資料表和資料 中說明。)

{ "Id": 123, "Title": "Bicycle 123", "Description": "123 description", "BicycleType": "Hybrid", "Brand": "Brand-Company C", "Price": 500, "Color": ["Red", "Black"], "ProductCategory": "Bicycle", "InStock": true, "QuantityOnHand": null, "RelatedItems": [ 341, 472, 649 ], "Pictures": { "FrontView": "http://example.com/products/123_front.jpg", "RearView": "http://example.com/products/123_rear.jpg", "SideView": "http://example.com/products/123_left_side.jpg" }, "ProductReviews": { "FiveStar": [ "Excellent! Can't recommend it highly enough! Buy it!", "Do yourself a favor and buy this." ], "OneStar": [ "Terrible product! Do not buy this." ] }, "Comment": "This product sells out quickly during the summer", "Safety.Warning": "Always wear a helmet" }

注意下列事項:

  • 分割區索引鍵值 (Id) 為 123。沒有排序索引鍵。

  • 大多數的屬性都有純量資料類型,例如 StringNumberBooleanNull

  • 一個屬性 (Color) 為 String Set

  • 下列屬性為文件資料類型:

    • RelatedItems 的清單。每個元素是相關產品的 Id

    • Pictures 的映射。每個元素都是圖片的簡短描述,以及對應映像檔案URL的 。

    • ProductReviews 的映射。每個元素都代表一個評分及對應至該評分的評論清單。一開始,此映射會填入五星與一星評論。

最上層屬性

如果屬性未內嵌於另一個屬性,則為最上層。針對 ProductCatalog 項目,最上層屬性包括:

  • Id

  • Title

  • Description

  • BicycleType

  • Brand

  • Price

  • Color

  • ProductCategory

  • InStock

  • QuantityOnHand

  • RelatedItems

  • Pictures

  • ProductReviews

  • Comment

  • Safety.Warning

除了 Color (清單)、RelatedItems (清單)、Pictures (映射) 與 ProductReviews (映射) 之外,上述所有最上層屬性都是純量。

巢狀屬性

如果屬性內嵌於另一個屬性,則為巢狀。若要存取巢狀屬性,您可以使用取值運算子

  • [n]:用於清單元素

  • . (點):用於映射元素

存取清單元素

清單元素的取消參考運算子為 [N],其中 n 是元素編號。清單元素的開頭為零,所以 [0] 代表清單中的第一個元素,[1] 代表第二個,以此類推。以下是一些範例:

  • MyList[0]

  • AnotherList[12]

  • ThisList[5][11]

元素 ThisList[5] 本身是巢狀清單。因此,ThisList[5][11] 是指該清單中的第 12 個元素。

方括號內的數字必須是非負整數。因此,下列表達式無效:

  • MyList[-1]

  • MyList[0.4]

存取映射元素

映射元素的取消參考運算子為 . (點號)。請在映射中的元素之間使用點號做為分隔符號:

  • MyMap.nestedField

  • MyMap.nestedField.deeplyNestedField

文件路徑

在表達式中,您可以使用文件路徑指示 DynamoDB 要在何處尋找屬性。針對最上層屬性,文件路徑就是屬性名稱。針對巢狀屬性,您可以使用取消參考運算子來建構文件路徑。

以下是文件路徑的一些範例 (請參閱 在 DynamoDB 中使用運算式時參考項目屬性 中所示的項目。)

  • 最上層純量屬性。

    Description

  • 最上層清單屬性。(這會傳回整個清單,而不只是部分元素。)

    RelatedItems

  • RelatedItems 清單中的第三個元素 (記得清單元素的開頭為零)。

    RelatedItems[2]

  • 產品的正視圖。

    Pictures.FrontView

  • 所有五星評論。

    ProductReviews.FiveStar

  • 第一個五星評論。

    ProductReviews.FiveStar[0]

注意

文件路徑的最大深度為 32。因此,路徑中的取消參考運算子數目不得超過此限制。

您可以在文件路徑中使用任何屬性名稱,只要名稱符合下列要求:

  • 屬性名稱必須以井字號 (#) 開頭

  • 第一個字元為 a-zA-Z0-9

  • 第二個字符 (如果有) 為 a-zA-Z

注意

若屬性名稱未符合此需求,您必須將表達式屬性名稱定義為預留位置。

如需詳細資訊,請參閱DynamoDB 中的表達式屬性名稱 (別名)