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 contemporaneamenteSeleziona: COUNT lasciato sul posto mentre è stata aggiunta una ProjectionExpression (o viceversa).
  • Legacy AttributesToGet combinato con Select: 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

  1. Sto solo contando? Rilascia la proiezione. Imposta Seleziona: COUNT e rimuovi ProjectionExpression/AttributesToGet.
  2. Hai bisogno di attributi specifici? Rilascia Seleziona: COUNT. Fornisci una ProjectionExpression; DynamoDB imposta Seleziona per impostazione predefinita su SPECIFIC_ATTRIBUTES, quindi di solito non imposti affatto Seleziona.
  3. 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 chiamata Seleziona: COUNT separata.
  4. Preferisci ProjectionExpression a AttributesToGet — AWS contrassegna AttributesToGet come parametro legacy e consiglia invece ProjectionExpression.

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

Errori correlati

Riferimenti

Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.