本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本節說明如何在 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 中的表達式屬性名稱 (別名)。