DynamoDB "Cannot Specify AttributesToGet When Select Is COUNT": impossibile specificare la proiezione quando Seleziona è COUNT
TL;DR — Il tuo set Query/Scan Select: COUNT e una ProjectionExpression (o il legacy AttributesToGet). COUNT restituisce solo il numero di elementi corrispondenti, mai gli elementi stessi, quindi denominare gli attributi da restituire è contraddittorio: DynamoDB lo rifiuta. Scegline uno: "Seleziona: COUNT" senza proiezione oppure una proiezione con "Seleziona: SPECIFIC_ATTRIBUTES" (l'impostazione predefinita quando fornisci una "ProiezioneExpression").
Cosa significa
ValidationException: 1 validation error detected: Cannot specify the AttributesToGet when choosing to get only the Count
# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: 1 validation error detected: Cannot specify the ProjectionExpression when choosing to get only the Count(Questo è il messaggio con il parametro legacy "AttributesToGet"; con "ProjectionExpression" il testo è diverso, ma la regola è la stessa.) "Select" controlla cosa restituisce una lettura. "COUNT" richiede DynamoDB per un conteggio (Count/ScannedCount) e nessun dato sull'elemento. Una ProjectionExpression/AttributesToGet richiede attributi specifici degli elementi restituiti. Questi due valori si escludono a vicenda: il riferimento Query API lo spiega chiaramente: "Se utilizzi il parametro ProjectionExpression, il valore per Select può essere solo SPECIFIC_ATTRIBUTES. Qualsiasi altro valore per Select restituirà un errore." Una nota sui costi: "COUNT" consuma comunque la stessa capacità di lettura necessaria per recuperare effettivamente gli elementi: consente di risparmiare larghezza di banda, non RCU.
Perché succede
- Entrambi i parametri impostati contemporaneamente —
Seleziona: COUNTlasciato sul posto mentre è stata aggiunta unaProjectionExpression(o viceversa). - Legacy
AttributesToGetcombinato conSelect: COUNT. - Un generatore di query che allega sempre una proiezione, anche quando il chiamante desiderava solo un conteggio.
- Incomprensione di "Seleziona": aspettarsi che "COUNT" restituisca anche gli elementi contati.
Come risolverlo
- Sto solo contando? Rilascia la proiezione. Imposta
Seleziona: COUNTe rimuoviProjectionExpression/AttributesToGet. - Hai bisogno di attributi specifici? Rilascia
Seleziona: COUNT. Fornisci unaProjectionExpression; DynamoDB impostaSelezionaper impostazione predefinita suSPECIFIC_ATTRIBUTES, quindi di solito non imposti affattoSeleziona. - Hai bisogno sia del conteggio che degli elementi? Effettua una chiamata per gli elementi (con la tua proiezione) e leggi il relativo
Conteggio, oppure effettua una chiamataSeleziona: COUNTseparata. - Preferisci
ProjectionExpressionaAttributesToGet— AWS contrassegnaAttributesToGetcome parametro legacy e consiglia inveceProjectionExpression.
Aprilo in DynoTable
Il pannello delle query di DynoTable separa la modalità di conteggio dalla proiezione: puoi recuperare gli elementi con attributi selezionati o leggere il conteggio corrispondente, mai entrambi in un'unica richiesta in conflitto. Apri una tabella con ⌘K, esegui una query e controlla il conteggio dei risultati nella barra di stato senza allegare una ProjectionExpression.
Utilizza il Creatore di query per generare una richiesta di sola proiezione o di solo conteggio per il tuo codice SDK. Cambia profilo con ⌘P; configurarli in Impostazioni → Profili con Connessione di prova. Consulta Connetti a AWS e Installa.
Fonti
- Query: riferimento Amazon DynamoDB API (verificato il 13-07-2026)
- AttributesToGet (legacy) (verificato il 13/07/2026)
Errori correlati
- Impossibile utilizzare sia parametri di espressione che non di espressione - mescola parametri legacy ed espressione.
- Condizione della chiave di query non supportata: una condizione della chiave non valida sulla stessa richiesta.
- Impara: Conteggio, somma e aggregazione · Espressioni di proiezione
Riferimenti
- Query: riferimento Amazon DynamoDB API
- Scansione: riferimento Amazon DynamoDB API
- AttributesToGet (legacy) - Guida per sviluppatori Amazon DynamoDB
- Gestione degli errori con DynamoDB - Guida per sviluppatori di Amazon DynamoDB
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.