在 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 中的表达式属性名称(别名)。