在 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 开始,因此 [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 中的表达式属性名称(别名)。