本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要從資料表讀取資料,您可以使用 GetItem
、Query
或 Scan
等操作。Amazon DynamoDB 會依預設傳回所有項目屬性。若只要取得部分而非全部屬性,請使用投射表達式。
投射表達式是識別所需屬性的字串。若要擷取單一屬性,請指定其名稱。若為多個屬性,則必須以逗號分隔名稱。
以下是根據 在 DynamoDB 中使用表達式時參考項目屬性 中的 ProductCatalog
項目而來的一些投射表達式範例:
-
單一最上層屬性。
Title
-
三個最上層屬性。DynamoDB 會擷取整個
Color
設定。Title, Price, Color
-
四個最上層屬性。DynamoDB 會傳回
RelatedItems
和ProductReviews
的整個內容。Title, Description, RelatedItems, ProductReviews
注意
投影表達式不會影響佈建的輸送量消耗。DynamoDB 會根據項目大小來決定消耗的容量單位,而不是傳回給應用程式的資料量。
預留單字和特殊字元
DynamoDB 已保留單字和特殊字元。DynamoDB 可讓您使用這些保留字和特殊字元做為名稱,但我們建議您避免這麼做,因為每當您在表達式中使用這些名稱時,都必須為其使用別名。如需完整清單,請參閱 DynamoDB 中的保留字。
在以下情況下,您將需要使用表達式屬性名稱來取代實際名稱:
-
屬性名稱位於 DynamoDB 中預留字詞的清單上。
-
屬性名稱不符合第一個字元為
a-z
或A-Z
以及第二個字元 (如果有) 為a-Z
、A-Z
或 的要求0-9
。 -
屬性名稱包含 # (hash) 或 : (colon)。
下列 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"
}
]
}
}
}