Puede utilizar el Selectparámetro y utilizarloCOUNT en la solicitud. "Devuelve el número de elementos coincidentes, en lugar de los elementos coincidentes en sí". Importante , como lo mencionó Saumitra R. Bhave en un comentario , "Si el tamaño del conjunto de resultados de la consulta es superior a 1 MB, ScannedCount y Count representarán solo un recuento parcial del total de elementos. Deberá realizar varios Operaciones de consulta para recuperar todos los resultados " .
No estoy familiarizado con PHP, pero así es como se puede usar con Java. Y luego, en lugar de usar Count(que supongo que es una función en PHP) en el 'Items', puede usar el Countvalor de la respuesta - $result['Count']:
final String week = "whatever";
final Integer myPoint = 1337;
Condition weekCondition = new Condition()
        .withComparisonOperator(ComparisonOperator.EQ)
        .withAttributeValueList(new AttributeValue().withS(week));
Condition myPointCondition = new Condition()
        .withComparisonOperator(ComparisonOperator.GE)
        .withAttributeValueList(new AttributeValue().withN(myPoint.toString()))
Map<String, Condition> keyConditions = new HashMap<>();
keyConditions.put("week", weekCondition);
keyConditions.put("point", myPointCondition);
QueryRequest request = new QueryRequest("game_table");
request.setIndexName("week-point-index");
request.setSelect(Select.COUNT);
request.setKeyConditions(keyConditions);
QueryResult result = dynamoDBClient.query(request);
Integer count = result.getCount();
Si no necesita emular la WHEREcláusula, puede utilizar una DescribeTablesolicitud y utilizar el recuento de elementos resultante para obtener una estimación.
  El número de elementos de la tabla especificada. DynamoDB actualiza este valor aproximadamente cada seis horas. Es posible que los cambios recientes no se reflejen en este valor.
Además, una nota importante de la documentación como señaló Saumitra R. Bhave en los comentarios sobre esta respuesta:
  Si el tamaño del Queryconjunto de resultados es superior a 1 MB ScannedCounty Countrepresenta solo un recuento parcial del total de elementos. Debe realizar varias Queryoperaciones para recuperar todos los resultados (consulte Paginación de resultados de consultas de tabla ).
     
                
AmazonDynamoDBClientBuilder.standard().withRegion(region).withCredentials(credentialsProvider).build() .query(new QueryRequest(freeKeysTableName).withSelect(Select.COUNT)).getCount()while(result.getLastEvaluatedKey()!=null){ request.setExclusiveStartKey(result.getLastEvaluatedKey()); result = dynamoDBClient.query(request); count+= result.getCount(); }Con aws dynamodb cli puede obtenerlo mediante escaneo de la siguiente manera:
La respuesta se verá similar a esto:
observe que esta información está en tiempo real en contraste con la API describe-table
fuente
También se puede ver desde la interfaz de usuario. Vaya a la pestaña de descripción general en la tabla, verá el recuento de artículos. Espero que ayude a alguien.
fuente
Reemplace el nombre de la tabla y use la siguiente consulta para obtener los datos en su entorno local:
Reemplace el nombre de la tabla y elimine la URL del punto final para obtener los datos en el entorno de producción
fuente
Si llega aquí y está trabajando con C #, aquí está el código:
fuente
Similar a Java en PHP solo establezca Seleccione PARÁMETRO con valor 'COUNT'
$result = $aws->query(array( 'TableName' => 'game_table', 'IndexName' => 'week-point-index', 'KeyConditions' => array( 'week' => array( 'ComparisonOperator' => 'EQ', 'AttributeValueList' => array( array(Type::STRING => $week) ) ), 'point' => array( 'ComparisonOperator' => 'GE', 'AttributeValueList' => array( array(Type::NUMBER => $my_point) ) ) ), 'Select' => 'COUNT' ));y acceda así:
echo $ resultado ['Recuento'];
pero como Saumitra mencionó anteriormente, tenga cuidado con los conjuntos de resultados de más de 1 MB, en ese caso use LastEvaluateKey hasta que devuelva nulo para obtener el último valor de recuento actualizado.
fuente
Puede utilizar la consulta del asignador dynamodb.
llama
loadAllResults()que cargaría perezosamente el próximo resultado disponible hasta allResultsLoaded.Ref: https://docs.amazonaws.cn/en_us/amazondynamodb/latest/developerguide/DynamoDBMapper.Methods.html#DynamoDBMapper.Methods.query
fuente
le dará el recuento de las filas filtradas
dónde,
fuente
Estoy publicando esta respuesta para cualquiera que use C # y quiera una respuesta completamente funcional y bien probada que demuestre el uso de consultas en lugar de escanear. En particular, esta respuesta maneja más de 1 MB de tamaño de elementos para contar.
fuente
En Scala:
fuente
Usé escanear para obtener el recuento total de tableName requerido. A continuación, se muestra un fragmento de código Java para el mismo
fuente
Esta es la solución para los usuarios de AWS JavaScript SDK, es casi la misma para otros idiomas.
Result.data.Count le dará lo que está buscando
fuente