Espressioni di condizione chiave per l'operazione query - 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à.

Espressioni di condizione chiave per l'operazione query

Per specificare i criteri di ricerca, è possibile utilizzare una espressione di condizione chiave, ovvero una stringa che determina gli elementi da leggere dalla tabella o dall'indice.

Devi specificare il nome e il valore della chiave di partizione come condizione di uguaglianza. Non puoi utilizzare un attributo non chiave in un'espressione di condizione chiave.

Facoltativamente puoi fornire una seconda condizione per la chiave di ordinamento (se presente). La condizione della chiave di ordinamento deve utilizzare uno dei seguenti operatori di confronto:

  • a = b: true se l'attributo a è uguale al valore b

  • a < b: true se a è minore di b

  • a <= b: true se a è minore o uguale a b

  • a > b: true se a è maggiore di b

  • a >= b: true se a è maggiore o uguale a b

  • a BETWEEN b AND c: true se a è maggiore o uguale a b e minore o uguale a c.

È supportata anche la seguente funzione:

  • begins_with (a, substr): true se il valore dell'attributo a inizia con una determinata sottostringa.

Gli esempi seguenti AWS Command Line Interface (AWS CLI) illustrano l'uso delle espressioni delle condizioni chiave. Queste espressioni usano segnaposti (come ad esempio :name e :sub) anziché i valori effettivi. Per ulteriori informazioni, consultare Nomi di attributi di espressione in DynamoDB e Valori degli attributi dell'espressione.

Esempio

Esegui la query sulla tabella Thread per un particolare ForumName (chiave di partizione). Tutti gli elementi con quel valore di ForumName vengono letti dalla query, perché la chiave di ordinamento (Subject) non è inclusa in KeyConditionExpression.

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name" \ --expression-attribute-values '{":name":{"S":"Amazon DynamoDB"}}'
Esempio

Esegui la query sulla tabella Thread per un particolare ForumName (chiave di partizione); questa volta vengono restituiti solo gli elementi con uno specifico Subject (chiave di ordinamento).

aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name and Subject = :sub" \ --expression-attribute-values file://values.json

Gli argomenti per --expression-attribute-values sono memorizzati nel file values.json:

{ ":name":{"S":"Amazon DynamoDB"}, ":sub":{"S":"DynamoDB Thread 1"} }
Esempio

Esegui la query sulla tabella Reply per un particolare Id (chiave di partizione); vengono restituiti solo gli elementi il cui ReplyDateTime (chiave di ordinamento) inizia con determinati caratteri.

aws dynamodb query \ --table-name Reply \ --key-condition-expression "Id = :id and begins_with(ReplyDateTime, :dt)" \ --expression-attribute-values file://values.json

Gli argomenti per --expression-attribute-values sono memorizzati nel file values.json:

{ ":id":{"S":"Amazon DynamoDB#DynamoDB Thread 1"}, ":dt":{"S":"2015-09"} }

Puoi utilizzare qualsiasi nome di attributo in un'espressione condizionale della chiave, a condizione che il primo carattere sia a-z o A-Z e che il resto dei caratteri (a iniziare dal secondo carattere, se presente) sia a-z, A-Z o 0-9. Inoltre, il nome dell'attributo non deve essere una parola riservata di DynamoDB. Per l'elenco completo delle parole riservate, consulta Parole riservate in DynamoDB. Se un nome di attributo non soddisfa questi requisiti, devi definire un nome di attributo dell'espressione come un segnaposto. Per ulteriori informazioni, consulta Nomi di attributi di espressione in DynamoDB.

Per gli elementi con un determinato valore di chiave di partizione, DynamoDB li memorizza tutti insieme, ordinati in base al valore della chiave di ordinamento. In un'operazione Query, DynamoDB recupera gli elementi nell'ordine stabilito e quindi li elabora utilizzando KeyConditionExpression e qualsiasi FilterExpression eventualmente presente. Solo allora i risultati della Query vengono restituiti al client.

Un'operazione Query restituisce sempre un set di risultati. Se non vengono trovati item corrispondenti, il set di risultati è vuoto.

I risultati della Query sono sempre ordinati per il valore della chiave di ordinamento. Se il tipo di dati della chiave di ordinamento è Number, i risultati vengono restituiti in ordine numerico. In caso contrario, i risultati vengono restituiti nell'ordine di byte UTF-8. Per impostazione predefinita, l'ordinamento è crescente. Per invertire l'ordine, imposta il parametro ScanIndexForward su false.

Una singola operazione Query può recuperare un massimo di 1 MB di dati. Questo limite si applica prima che ai risultati venga applicato FilterExpression o ProjectionExpression. Se LastEvaluatedKey è presente nella risposta ed è non null, devi eseguire la paginazione del set di risultati (consulta Paginazione dei risultati della query della tabella).