从全局二级索引表中获取值

时间:2014-01-02 12:09:01

标签: php zend-framework2 amazon-dynamodb zend-db-table secondary-indexes

我正在使用DynamoDB和zend框架。

我可以使用此方法从普通表中获取行。

$response['Items'] = $this->dbClient->query(
     array(
        "TableName" => "user",
        "KeyConditions" =>  array( 
                               "userId" => array(
                                             "ComparisonOperator" => ComparisonOperator::EQ,
                                             "AttributeValueList" => array(
                                                                       array(Type::NUMBER => 2))
                                                                     )
                                              )
                               )
           );

但是如何根据全局二级索引获取信息。 我在这个表Id和电子邮件中有两个字段。

我想基于电子邮件进行搜索并从全球二级索引表中获取Id。我想使用此id从主用户表中获取用户的所有其他信息。我想在本地DynamoDB中执行此操作。

如何根据zend框架中的Global二级索引表中的电子邮件获取ID?

1 个答案:

答案 0 :(得分:1)

您只需在查询时添加索引名称,但在您的全局索引中,电子邮件应为哈希,此处将投影所有属性。

   $response = $this->dbClient->query(
       array(
            "TableName" => "user",
            "IndexName" => "index name",
            "KeyConditions" => array(
                 "email" => array(
                      "ComparisonOperator" => ComparisonOperator::EQ,
                      "AttributeValueList" => array(
                          array(Type::STRING => "email@abc.com"))))));

然后你可以获取userId