KeyConditions (eredità) - Amazon DynamoDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

KeyConditions (eredità)

Nota

Consigliamo di utilizzare i nuovi parametri di espressione piuttosto che i parametri precedenti, se possibile. Per ulteriori informazioni, consulta Utilizzo di espressioni in DynamoDB. Per informazioni specifiche sul nuovo parametro che sostituisce questo, consulta usa KeyConditionExpressioninvece..

Il parametro condizionale legacy KeyConditions contiene i criteri di selezione per un'operazione Query. Per una query su una tabella, è possibile disporre di condizioni solo sugli attributi della chiave primaria della tabella. È necessario specificare il nome e il valore della chiave di partizione come condizione EQ. Facoltativamente, è possibile fornire una seconda condizione che fa riferimento alla chiave di ordinamento.

Nota

Se non si specifica una condizione della chiave di ordinamento, verranno recuperati tutti gli elementi che corrispondono alla chiave di partizione. Se è presente FilterExpression o QueryFilter, verrà applicato dopo che gli elementi sono stati recuperati.

Per una query su un indice, è possibile disporre di condizioni solo sugli attributi della chiave di indice. È necessario specificare il nome e il valore della chiave di partizione dell'indice come condizione EQ. Facoltativamente, è possibile fornire una seconda condizione che fa riferimento alla chiave di ordinamento dell'indice.

Ogni elemento KeyConditions è costituito da un nome di attributo da confrontare, insieme a quanto segue:

  • AttributeValueList: uno o più valori da valutare rispetto all'attributo fornito. Il numero di valori nell'elenco dipende dal ComparisonOperator utilizzato.

    Per il tipo Number, i confronti dei valori sono numerici.

    I confronti tra valori di stringa con valori maggiori di, uguali o minori di si basano su Unicode con codifica binaria -8. UTF Ad esempio, a è maggiore di A e a è maggiore di B.

    Per il tipo Binary, quando confronta i valori binari DynamoDB tratta ogni byte dei dati binari come non firmato.

  • ComparisonOperator: un comparatore per valutare gli attributi. Ad esempio, uguale a, maggiore di e minore di.

    Per KeyConditions, sono supportati solo i seguenti operatori di confronto:

    EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN

    Di seguito sono riportate le descrizioni di questi operatori di confronto.

    • EQ: uguale.

      AttributeValueList può contenere solo un AttributeValue di tipo String, Number o Binary (non un tipo Set). Se un elemento contiene un elemento AttributeValue di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, {"S":"6"} non è uguale a {"N":"6"}. Inoltre, {"N":"6"} non è uguale a {"NS":["6", "2", "1"]}.

    • LE: minore o uguale a.

      AttributeValueList può contenere solo un elemento AttributeValue di tipo String, Number o Binary (non un tipo Set). Se un elemento contiene un elemento AttributeValue di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, {"S":"6"} non è uguale a {"N":"6"}. Inoltre, {"N":"6"} non si confronta con {"NS":["6", "2", "1"]}.

    • LT: minore di.

      AttributeValueList può contenere solo un AttributeValue di tipo String, Number o Binary (non un tipo Set). Se un elemento contiene un elemento AttributeValue di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, {"S":"6"} non è uguale a {"N":"6"}. Inoltre, {"N":"6"} non si confronta con {"NS":["6", "2", "1"]}.

    • GE: maggiore o uguale a.

      AttributeValueList può contenere solo un elemento AttributeValue di tipo String, Number o Binary (non un tipo Set). Se un elemento contiene un elemento AttributeValue di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, {"S":"6"} non è uguale a {"N":"6"}. Inoltre, {"N":"6"} non si confronta con {"NS":["6", "2", "1"]}.

    • GT: maggiore di.

      AttributeValueList può contenere solo un elemento AttributeValue di tipo String, Number o Binary (non un tipo Set). Se un elemento contiene un elemento AttributeValue di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, {"S":"6"} non è uguale a {"N":"6"}. Inoltre, {"N":"6"} non si confronta con {"NS":["6", "2", "1"]}.

    • BEGINS_WITH: controlla la presenza di un prefisso.

      AttributeValueList può contenere solo un AttributeValue di tipo String o Binary (non un tipo Number o Set). L'attributo di destinazione del confronto deve essere String o Binary (non un tipo Number o Set).

    • BETWEEN: maggiore di o uguale a primo valore e minore di o uguale a secondo valore.

      AttributeValueList deve contenere due elementiAttributeValue dello stesso tipo, String, Number o Binary (non un tipo Set). Un attributo di destinazione corrisponde se il valore di destinazione è maggiore o uguale al primo elemento e minore o uguale al secondo elemento. Se un elemento contiene un elemento AttributeValue di un tipo diverso da quello specificato nella richiesta, il valore non corrisponde. Ad esempio, {"S":"6"} non si confronta con {"N":"6"}. Inoltre, {"N":"6"} non si confronta con {"NS":["6", "2", "1"]}.

Usa invece — Esempio KeyConditionExpression

Si supponga di voler recuperare diversi elementi con la stessa chiave di partizione dalla tabella Music. Puoi usare una Query richiesta con un KeyConditions parametro, come in questo AWS CLI esempio:

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"} ] } }'

Puoi invece utilizzare KeyConditionExpression:

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"} }'