Expresiones de condición de clave para la operación Query en DynamoDB
Puede utilizar cualquier nombre de atributo en una expresión de condición de clave, siempre y cuando el primer carácter sea a-z
o A-Z
y el resto de los caracteres (a partir del segundo carácter, si lo hay) sea a-z
, A-Z
o 0-9
. Además, el nombre de atributo no debe ser una palabra reservada de DynamoDB. Para obtener una lista completa de estas palabras, consulte Palabras reservadas en DynamoDB. Si un nombre de atributo no cumple estos requisitos, debe 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.
DynamoDB almacena cerca unos de otros y ordenados según su clave de ordenación aquellos elementos que tienen un valor de clave de partición determinado. En una operación Query
, DynamoDB recupera los elementos de forma ordenada y, a continuación, los procesa mediante las expresiones KeyConditionExpression
y FilterExpression
que estén presentes. Solo entonces devuelve los resultados de Query
al cliente.
Una operación Query
siempre devuelve un conjunto de resultados. Si no se encuentran elementos coincidentes, el conjunto de resultados está vacío.
Los resultados de Query
siempre se ordenan según el valor de la clave de ordenación. Si el tipo de datos de la clave de ordenación es Number
, los resultados se devuelven en orden numérico. De lo contrario, los resultados se devuelven según el orden de los bytes UTF-8. De forma predeterminada, el orden es ascendente. Para invertirlo, establezca el parámetro ScanIndexForward
en false
.
En una sola operación Query
se puede recuperar un máximo de 1 MB de datos. Este límite se aplica antes de que FilterExpression
o ProjectionExpression
se apliquen a los resultados. Si LastEvaluatedKey
está presente en la respuesta y su valor no es null, debe paginar el conjunto de resultados (consulte Paginación de los resultados de consulta de tabla en DynamoDB).
Ejemplos de expresión de condición de clave
Para especificar los criterios de búsqueda, se utiliza una expresión de condición de clave; se trata de una cadena que determina los elementos que se van a leer en la tabla o el índice.
Debe especificar el nombre y valor de la clave de partición como una condición de igualdad. No puede utilizar un atributo no clave en una expresión de condición clave.
Si lo desea, puede proporcionar una segunda condición para la clave de ordenación (en caso de incluirse). En la condición de clave de ordenación se debe utilizar uno de los siguientes operadores de comparación:
-
: es true si el atributoa
=b
a
es igual al valorb
. -
: es true sia
<b
a
es menor queb
. -
: es true sia
<=b
a
es menor o igual queb
. -
: es true sia
>b
a
es mayor queb
. -
: es true sia
>=b
a
es mayor o igual queb
. -
: es true sia
BETWEENb
ANDc
a
es mayor o igual queb
y menor o igual quec
.
También se admite la siguiente función:
-
begins_with (
: es true si el valor del atributoa
,substr
)
comienza por una subcadena determinada.a
En los siguientes ejemplos de la AWS Command Line Interface (AWS CLI) se muestra el uso de expresiones de condición de clave. Estas expresiones utilizan marcadores de posición (como :name
y :sub
) en lugar de los valores reales. Para obtener más información, consulte Nombres de atributos de expresión (Alias) en DynamoDB y Uso de valores de atributos de expresión en DynamoDB.
ejemplo
Consulta la tabla Thread
para buscar un valor concreto de ForumName
(clave de partición). La consulta leerá todos los elementos que tengan ese valor de ForumName
, porque la clave de ordenación (Subject
) no se incluye en KeyConditionExpression
.
aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name" \ --expression-attribute-values '{":name":{"S":"Amazon DynamoDB"}}'
ejemplo
Consulta la tabla Thread
para buscar un valor concreto de ForumName
(clave de partición), pero esta vez devuelve solo los elementos que tienen un valor determinado de Subject
(clave de ordenación).
aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name and Subject = :sub" \ --expression-attribute-values file://values.json
Los argumentos de --expression-attribute-values
se almacenan en el archivo values.json
.
{ ":name":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"} }
ejemplo
Consulta la tabla Reply
para buscar un valor concreto de Id
(clave de partición), pero solo devuelve los elementos cuyo valor de ReplyDateTime
(clave de ordenación) comienza por determinados caracteres.
aws dynamodb query \ --table-name Reply \ --key-condition-expression "Id = :id and begins_with(ReplyDateTime, :dt)" \ --expression-attribute-values file://values.json
Los argumentos de --expression-attribute-values
se almacenan en el archivo values.json
.
{ ":id":{"S":"Amazon DynamoDB#DynamoDB Thread 1"}, ":dt":{"S":"2015-09"} }