Puede utilizar el Select
pará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 Count
valor 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 WHERE
cláusula, puede utilizar una DescribeTable
solicitud 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 Query
conjunto de resultados es superior a 1 MB ScannedCount
y Count
representa solo un recuento parcial del total de elementos. Debe realizar varias Query
operaciones para recuperar todos los resultados (consulte Paginación de resultados de consultas de tabla ).