Espressioni delle condizioni chiave per l'operazione Query in DynamoDB - 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 delle condizioni chiave per l'operazione Query in DynamoDB

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 degli attributi di espressione (alias) 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. Altrimenti, i risultati vengono restituiti nell'ordine di UTF -8 byte. 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 Impaginazione dei risultati delle query nelle tabelle in DynamoDB).

Esempi di espressioni di condizioni chiave

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— vero se l'attributo a è uguale al valore b

  • a < b— vero se a è inferiore a b

  • a <= b— vero se a è inferiore o uguale a b

  • a > b— vero se a è maggiore di b

  • a >= b— vero se a è maggiore o uguale a b

  • a BETWEEN b AND c— vero se a è maggiore o uguale a be 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.

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

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