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 deComparisonOperatorque 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,
aes mayor queAyaes 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 | BETWEENA continuación se indican las descripciones de estos operadores de comparación.
-
EQ: igual que.AttributeValueListpuede contener un soloAttributeValuede tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entradaAttributeValuede 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.AttributeValueListpuede contener una sola entradaAttributeValuede tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entradaAttributeValuede 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.AttributeValueListpuede contener un soloAttributeValuede tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entradaAttributeValuede 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.AttributeValueListpuede contener una sola entradaAttributeValuede tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entradaAttributeValuede 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.AttributeValueListpuede contener una sola entradaAttributeValuede tipo String (cadena), Number (número) o Binary (binario) (no de tipo Set [conjunto]). Si un elemento contiene una entradaAttributeValuede 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.AttributeValueListpuede contener un soloAttributeValuede 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.AttributeValueListdebe contener dos entradasAttributeValuedel 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 entradaAttributeValuede 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"} }'