在 DynamoDB 中使用表达式时引用项目属性 - Amazon DynamoDB
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 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。没有排序键。

  • 大多数属性都具有标量数据类型,例如 StringNumberBooleanNull

  • 一个属性 (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-zA-Z0-9

  • 第二个字符(如果存在)是 a-zA-Z

注意

如果属性名称不满足此要求,则您必须将表达式属性名称定义为占位符。

有关更多信息,请参阅 DynamoDB 中的表达式属性名称(别名)