是否可以在不分页的情况下获取 dynamodb 扫描结果的记录数?

Is it possible to fetch record count for dynamodb scan result without pagination?

我的 dynamodb 中有一组记录 table。我想根据特定条件 不分页 获取记录数。 这是我获取数据的代码:

$db = $this->getDi()->get('dynamodb');
$dynamodb = $db->createDynamoDb();
$FilterExpression='tenant_id = :tid';
$ExpressionAttributeValuesArr=array(':tid'=>array('S'=>'16008d5bXYZ'), ':mod'=>array('S'=>"leads"));
scan_request=array(
                    'TableName' => 'xxxx',
                    'Count'     => true,
                    'FilterExpression' => $FilterExpression.' AND #module = :mod',
                    'ExpressionAttributeNames' => array('#module' => 'module'),
                    'ExpressionAttributeValues' => $ExpressionAttributeValuesArr,
                );
$scan_response = $dynamodb->scan($scan_request);

此代码 returns 记录列表和计数但不是整个集合或整个计数,因为我可以看到响应中返回的 LastEvaluatedKey 字段。我需要为这次扫描返回整个记录集的计数。我怎样才能做到这一点 ?这甚至可以不分页吗?

恐怕不是,COUNT是一个迟到的请求-也就是说,dynamo 读取(并且收费你这样做)table 中的每条记录,然后再应用过滤器然后将其减少到计数。

这就是您必须分页的原因,因为计数运算符只会 "see" 达到页面长度。

如果您不需要这样做 programatically/accurately,我会向您指出 AWS 在 DynamoDB 控制台中显示的 "estimated count"。