将SQL LIMIT查询转换为Dynamodb

时间:2015-08-17 07:15:42

标签: sql-server amazon-web-services amazon-s3 amazon-dynamodb aws-sdk

如何在Select name , college_id,phone_number from users where college_id =2 limit 100中转换此SQL查询dyanmodb

我试过下面的代码

  $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限制要处理的项目总数,而不是要返回的匹配项目总数

请帮帮我。

1 个答案:

答案 0 :(得分:0)

Amazon DynamoDB中没有等效的SQL <?php $conn = new PDO('mysql:host=localhost;dbname=ratebox', 'root', ''); //db connection $date1 = $_POST['date1']; $date2 = $_POST['date2']; $d1 = new DateTime("$date1"); $d2 = new DateTime("$date1"); $no_of_days = $d1->diff($d2)->days; //calculating no of days for ($x = 0; $x < $nO_of_days; $x = $x + 1) { $rate = $_POST['txt' + counter]; $conn->query("insert into tb_rate(rates) values (NOW(),'$rate')") or die(mysql_error()); } ?> 命令。您应该继续遍历分页结果集,直到达到所需的记录数。

<强>更新

糟糕! 限制参数。来自QUERY documentation

  

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

因此,请继续分析1MB结果集,直到达到限制为止。