将SQL LIMIT查询转换为Dynamodb



如何将此sql查询Select name , college_id,phone_number from users where college_id =2 limit 100转换为dyanmodb

I tried below code

  $iterator = $dynamo->query(array(
                    'TableName'     => 'users',
                    'IndexName' => 'college_id-phone_number-index',
                    'ScanIndexForward' => false,
                    'KeyConditions' => array(
                        'college_id' => array(
                            'AttributeValueList' => array(
                                array('S' => (string)$collegeId )
                            ),
                            'ComparisonOperator' => 'EQ'
                        ),
                        'phone_number' => array(
                            'AttributeValueList' => array(
                                array('S' => (string)$phoneNumber)
                            ),
                            'ComparisonOperator' => 'EQ'
                        )
                    ),
                    **'Limit' => 100,**
                )
            );

我发现Limit = 100限制处理的项目总数返回的匹配项目总数

请帮帮我。

在Amazon DynamoDB中没有对应的SQL LIMIT命令。您应该不断遍历分页结果集,直到达到所需的记录数为止。

更新:

哦!一个极限参数。来自QUERY文档:

Limit:要返回的最大项数(不一定是匹配项的数量)。如果DynamoDB在查询表时处理的条目数量达到限制,它将停止查询并返回到该点的匹配值,并在后续操作中应用LastEvaluatedKey以继续查询。此外,如果在DynamoDB达到此限制之前结果集大小超过1MB,它将停止查询并返回匹配的值,并在后续操作中应用LastEvaluatedKey以继续查询。

因此,一直分页1MB的结果集,直到达到限制。

最新更新