本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 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
。沒有排序索引鍵。 -
大多數的屬性都有純量資料類型,例如
String
、Number
、Boolean
和Null
。 -
一個屬性 (
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-z
、A-Z
或0-9
-
第二個字符 (如果有) 為
a-z
或A-Z
注意
若屬性名稱未符合此需求,您必須將表達式屬性名稱定義為預留位置。
如需詳細資訊,請參閱DynamoDB 中的表達式屬性名稱 (別名)。