Referencia a atributos de elementos mediante expresiones en DynamoDB
En esta sección se describe cómo consultar los atributos de los elementos en una expresión en Amazon DynamoDB. Puede utilizar cualquier atributo, aunque se encuentre anidado profundamente en varias listas y mapas.
Ejemplo de elemento: ProductCatalog
Los ejemplos de esta página utilizan el siguiente elemento de muestra de la tabla de ProductCatalog
. Esta tabla se describe en Tablas y datos de ejemplo para usar en 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" }
Tenga en cuenta lo siguiente:
-
El valor de la clave de partición (
Id
) es123
. No hay clave de ordenación. -
Los tipos de datos de la mayoría de los atributos son escalares, tales como
String
,Number
,Boolean
yNull
. -
Un atributo (
Color
) es de tipoString Set
. -
Los siguientes atributos tienen tipos de datos de documento:
-
Lista de
RelatedItems
. Cada componente es unId
de un producto relacionado. -
Mapa de imágenes (
Pictures
). Cada componente es una descripción breve de una imagen, junto con una dirección URL del archivo de imagen correspondiente. -
Mapa de imágenes (
ProductReviews
). Cada componente representa una clasificación y una lista de opiniones correspondientes a esa clasificación. Inicialmente, este mapa se rellena con opiniones de cinco estrellas y una estrella.
-
Atributos de nivel superior
Se considera que un atributo es de nivel superior si no está integrado en otro atributo. En el elemento ProductCatalog
, los atributos de nivel superior son:
-
Id
-
Title
-
Description
-
BicycleType
-
Brand
-
Price
-
Color
-
ProductCategory
-
InStock
-
QuantityOnHand
-
RelatedItems
-
Pictures
-
ProductReviews
-
Comment
-
Safety.Warning
Todos estos atributos de nivel superior son escalares, con la salvedad de Color
(lista), RelatedItems
(lista), Pictures
(mapa) y ProductReviews
(mapa).
Atributos anidados
Se considera que un atributo es anidado si está integrado en otro atributo. Para obtener acceso a un atributo anidado, se utilizan los operadores de desreferenciación:
-
[n]
: para elementos de lista -
.
(punto): para elementos de mapa
Acceso a los elementos de la lista
El operador de desreferencia de un elemento de la lista es [N], donde n es el número del elemento. Las entradas de lista están basadas en cero; es decir, [0] representa la primera entrada de la lista, [1] representa la segunda, y así sucesivamente. Estos son algunos ejemplos:
-
MyList[0]
-
AnotherList[12]
-
ThisList[5][11]
La entrada ThisList[5]
es una lista anidada en sí misma. Por consiguiente, ThisList[5][11]
se refiere al duodécimo componente de esa lista.
El número contenido entre corchetes debe ser un entero no negativo. Por lo tanto, las siguientes expresiones no son válidas:
-
MyList[-1]
-
MyList[0.4]
Acceso a los elementos de un mapa
El operador de desreferenciación de una entrada de un mapa es . (un punto). Utilice el punto como separador entre las entradas de un mapa:
-
MyMap.nestedField
-
MyMap.nestedField.deeplyNestedField
Rutas de documento
En una expresión, se utiliza una ruta de documento para indicar a DynamoDB dónde se encuentra un atributo. En el caso de un atributo de nivel superior, la ruta de documento es el nombre de atributo. En el caso de un atributo anidado, se utilizan operadores de desreferenciación para construir la ruta de documento.
A continuación se indican algunos ejemplos de rutas de documentos. Consulte el elemento mostrado en Referencia a atributos de elementos mediante expresiones en DynamoDB.
-
Atributo escalar de nivel superior.
Description
-
Atributo de lista de nivel superior. (Devuelve la lista completa, no solo algunos de los componentes).
RelatedItems
-
Tercera entrada de la lista
RelatedItems
. Recuerde que las entradas de lista se basan en cero.RelatedItems[2]
-
Imagen frontal del producto.
Pictures.FrontView
-
Todas las opiniones de cinco estrellas.
ProductReviews.FiveStar
-
Primera de las opiniones de cinco estrellas.
ProductReviews.FiveStar[0]
nota
La profundidad máxima de una ruta de documento es 32. Por lo tanto, el número de operadores de desreferenciación de una ruta no puede superar este límite.
Puede utilizar cualquier nombre de atributo en la ruta de un documento siempre que cumpla estos requisitos:
-
El nombre del atributo debe empezar con una almohadilla (#)
-
El primer carácter es
a-z
,A-Z
o0-9
-
El segundo carácter (si está presente) es
a-z
oA-Z
nota
Si un nombre de atributo no cumple este requisito, tendrá que definir un nombre de atributo de expresión como marcador de posición.
Para obtener más información, consulte Nombres de atributos de expresión (Alias) en DynamoDB.