1

DynamoDB と zend フレームワークを使用しています。

これを使用して、通常のテーブルから行をフェッチできます。

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

しかし、グローバルセカンダリインデックスに基づいて情報を取得するにはどうすればよいですか。このテーブルには Id と email の 2 つのフィールドがあります。

電子メールに基づいて検索し、グローバル セカンダリ インデックス テーブルから Id を取得したいと考えています。そして、このIDを使用して、メインのユーザーテーブルからユーザーの他のすべての情報を取得したいと考えています。これをローカルの DynamoDB で実行したいと考えています。

Zendフレームワークのグローバルセカンダリインデックステーブルから電子メールに基づいてIDを取得するにはどうすればよいですか?

4

1 に答える 1

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を取得できます

于 2014-01-09T08:03:43.633 に答える