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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用表达式时指定项目属性

本节介绍如何在 Amazon DynamoDB 中的表达式中引用项目属性。您可以使用任何属性,即使它深层嵌套在多个列表和映射中。

示例项目:ProductCatalog

以下是项目的表示。ProductCatalog表。(此表在示例表和数据示例。)

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

  • 大多数属性都具有标量数据类型,例如StringNumberBoolean, 和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是元素编号。List 元素从 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 在哪里可以找到属性。对于顶级属性,文档路径只是属性名称。对于嵌套属性,您可以使用取消引用运算符构建文档路径。

下面是一些文档路径的示例。(请参阅使用表达式时指定项目属性。)

  • 顶级标量属性。

    Description

  • 顶级列表属性。(这将返回整个列表,而不仅仅是一些元素。)

    RelatedItems

  • 第三个元素来自RelatedItems列表。(请记住,列表元素是从零开始的。)

    RelatedItems[2]

  • 商品的前视图。

    Pictures.FrontView

  • 所有的五星评论。

    ProductReviews.FiveStar

  • 第一个五星级评论。

    ProductReviews.FiveStar[0]

注意

文档路径的最大深度为 32。因此,路径中取消引用运算符的数量不能超过此限制。

您可以在文档路径中使用任意属性名称,前提是第一个字符是a-z或者A-Z,第二个字符(如果存在)是a-zA-Z,或者0-9。如果属性名称不满足此要求,则您必须将表达式属性名称定义为占位符。有关更多信息,请参阅DynamoDB 中的表达式属性名称