Pesquisar no tipo de dados da lista no dínamo db aws
Estamos usando o dynamo db como nossa solução de banco de dados para um de nossos sites. estamos armazenando dados no dínamo db, conforme abaixo, dado json.
Temos um vídeo que pode pertencer a um / muitos gêneros, por isso escolhemos o tipo de dado da lista e armazenamos dados nele e o transformamos em GSI (índice secundário global)
Estou enfrentando vários problemas.
1) Quando defino gênero como índice, o aws fornece apenas três tipos de dados (string, binário, número), não nos permitindo armazenar dados de tipo de lista. Dá um erro inesperado do tipo de dados.
2) Se não o definir como índice, não tenho permissão para buscar os dados. O DynamoDB solicita a chave de hash, o que não é possível no meu caso, pois estou buscando uma listagem que não deve depender de uma chave de hash (chave primária).
{
"description": "********",
"genre": [
"Kids",
"Documentary"
],
"language": "******",
"status": "0",
"thumb_url": "******",
"title": "******",
"uploaded_by": "****** ",
"url": "******",
"video_id": 1330051052
}
Código para buscar dados
$DynamoDbClient = AWS::get('DynamoDb');
$result = $DynamoDbClient->query(array(
'TableName' => 'videos',
'IndexName' => 'genre-index',
'AttributesToGet' => array('video_id', 'language', 'description'),
'KeyConditions' => array(
// Key attribute
// This is non-key attribute
'genre' => array(
'ComparisonOperator' => 'EQ',
'AttributeValueList' => array(
array("S" => "Kids"),
)
),
),
));
No código acima, estou procurando vídeos no gênero Kids. mas retorna em branco e gera erro se eu não declarar gênero como índice. O mesmo vídeo pode pertencer a vários gêneros.
Existe alguma maneira de pesquisar dentro de uma lista OU não estou usando a API da maneira correta? A ajuda é sempre apreciada.