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.

Я хочу искать по электронной почте и получать идентификатор из глобальной таблицы вторичных индексов. И я хочу использовать этот идентификатор, чтобы получить всю другую информацию пользователя из главной пользовательской таблицы. Я хочу сделать это в местном DynamoDB.

Как я могу получить идентификатор по электронной почте из глобальной таблицы вторичных индексов в рамках zend?

+0

является "электронной почты" первичный ключ? Затем он должен работать, чтобы получить идентификатор, выбирая строку по электронной почте (ее первичный ключ). и использование этого идентификатора. Я не понимаю, почему ваша основная пользовательская таблица не настроила «email» как вторичный индекс, и это должно решить проблему сразу. Помните, что вторичные индексы могут быть созданы при создании таблицы. Также вам нужно указать, какие столбцы доступны для восстановления через вторичный индекс. – tavi

+0

это дизайн базы данных для DynamoDB. Да, я создаю вторичную таблицу индексов после создания таблицы. – keen

ответ

1

Вам просто нужно добавить имя индекса во время запроса, но в вашем глобальном индексном письме должно быть hash здесь все атрибуты будут проецироваться.

$response = $this->dbClient->query(
     array(
      "TableName" => "user", 
      "IndexName" => "index name", 
      "KeyConditions" => array(
       "email" => array(
         "ComparisonOperator" => ComparisonOperator::EQ, 
         "AttributeValueList" => array(
          array(Type::STRING => "[email protected]")))))); 

, то вы можете получить USERID

Смежные вопросы