KeyConditions (heredado)
nota
Le recomendamos que utilice los nuevos parámetros de expresión en lugar de estos parámetros heredados siempre que sea posible. Para obtener más información, consulte Uso de expresiones en DynamoDB. Para obtener información específica sobre el nuevo parámetro que reemplaza a este, Use KeyConditionExpression en su lugar..
El parámetro condicional heredado KeyConditions
contiene los criterios de selección de una operación Query
. Para ejecutar una consulta en una tabla, solo puede usar condiciones con los atributos de clave principal de la tabla. Debe proporcionar el nombre y valor de la clave de partición como una condición EQ
. Si lo desea, puede proporcionar una segunda condición referida a la clave de ordenación.
nota
Si no proporciona una condición de clave de ordenación, se recuperarán todos los elementos que coincidan con la clave de partición. Si hay una expresión FilterExpression
o QueryFilter
presente, se aplicará después de recuperar los elementos.
Para ejecutar una consulta en un índice, solo puede usar condiciones con los atributos de clave del índice. Debe proporcionar el nombre y valor de la clave de partición del índice como una condición EQ
. Si lo desea, puede proporcionar una segunda condición referida a la clave de ordenación del índice.
Cada entrada KeyConditions
consta de un nombre de atributo que se va a comparar, junto con lo siguiente:
-
AttributeValueList
: uno o más valores que se evaluarán respecto al atributo suministrado. El número de valores de la lista depende del valor deComparisonOperator
que se utilice.Para el tipo Number, las comparaciones de los valores son numéricas.
Las comparaciones de valores String (cadena) de tipo mayor que, igual que o menor que se basan en Unicode con la codificación UTF-8 binaria. Por ejemplo,
a
es mayor queA
ya
es mayor queB
.Al comparar valores de tipo Binary, DynamoDB trata cada byte de los datos binarios como sin signo.
-
ComparisonOperator
: comparador que permite evaluar los atributos. Por ejemplo: igual que, mayor que y menor que.Para
KeyConditions
, solo se admiten los siguientes operadores de comparación:EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN
A continuación se indican las descripciones de estos operadores de comparación.
-
EQ
: igual que.AttributeValueList
puede contener un soloAttributeValue
de tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entradaAttributeValue
de un tipo distinto del especificado en la solicitud, el valor no coincide. Por ejemplo,{"S":"6"}
no es igual que{"N":"6"}
.{"N":"6"}
tampoco es igual que{"NS":["6", "2", "1"]}
. -
LE
: menor o igual que.AttributeValueList
puede contener una sola entradaAttributeValue
de tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entradaAttributeValue
de un tipo distinto del proporcionado en la solicitud, el valor no coincide. Por ejemplo,{"S":"6"}
no es igual que{"N":"6"}
.{"N":"6"}
tampoco se compara con{"NS":["6", "2", "1"]}
. -
LT
: Menor que.AttributeValueList
puede contener un soloAttributeValue
de tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entradaAttributeValue
de un tipo distinto del proporcionado en la solicitud, el valor no coincide. Por ejemplo,{"S":"6"}
no es igual que{"N":"6"}
.{"N":"6"}
tampoco se compara con{"NS":["6", "2", "1"]}
. -
GE
: mayor o igual que.AttributeValueList
puede contener una sola entradaAttributeValue
de tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entradaAttributeValue
de un tipo distinto del proporcionado en la solicitud, el valor no coincide. Por ejemplo,{"S":"6"}
no es igual que{"N":"6"}
.{"N":"6"}
tampoco se compara con{"NS":["6", "2", "1"]}
. -
GT
: Mayor que.AttributeValueList
puede contener una sola entradaAttributeValue
de tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entradaAttributeValue
de un tipo distinto del proporcionado en la solicitud, el valor no coincide. Por ejemplo,{"S":"6"}
no es igual que{"N":"6"}
.{"N":"6"}
tampoco se compara con{"NS":["6", "2", "1"]}
. -
BEGINS_WITH
: comprueba si hay un prefijo.AttributeValueList
puede contener un soloAttributeValue
de tipo String (cadena) o Binary (binario) (no de tipo Number [número] ni Set [conjunto]). El atributo de destino de la comparación debe ser un valor de tipo String o Binary (no de tipo Number ni Set). -
BETWEEN
: mayor o igual que el primer valor y menor o igual que el segundo valor.AttributeValueList
debe contener dos entradasAttributeValue
del mismo tipo, que puede ser String (cadena), Number (número) o Binary (binario) (pero no de tipo Set [conjunto]). Un atributo de destino coincide si el valor de destino es mayor o igual que la primer entrada y menor o igual que la segunda entrada. Si un elemento contiene una entradaAttributeValue
de un tipo distinto del proporcionado en la solicitud, el valor no coincide. Por ejemplo,{"S":"6"}
no se compara con{"N":"6"}
.{"N":"6"}
tampoco se compara con{"NS":["6", "2", "1"]}
.
-
Use KeyConditionExpression en su lugar; ejemplo
Supongamos que desea recuperar varios elementos con la misma clave de partición de la tabla Music. Podría usar una solicitud Query
con un parámetro KeyConditions
como en este ejemplo de la AWS CLI:
aws dynamodb query \ --table-name Music \ --key-conditions '{ "Artist":{ "ComparisonOperator":"EQ", "AttributeValueList": [ {"S": "No One You Know"} ] }, "SongTitle":{ "ComparisonOperator":"BETWEEN", "AttributeValueList": [ {"S": "A"}, {"S": "M"} ] } }'
Puede utilizar KeyConditionExpression
en su lugar:
aws dynamodb query \ --table-name Music \ --key-condition-expression 'Artist = :a AND SongTitle BETWEEN :t1 AND :t2' \ --expression-attribute-values '{ ":a": {"S": "No One You Know"}, ":t1": {"S": "A"}, ":t2": {"S": "M"} }'