Поиск в списке типов данных в Dynamo DB AWS
Мы используем Dynamo DB в качестве базы данных для одного из наших сайтов. мы храним данные в динамо-базе данных в соответствии с приведенным ниже JSON.
У нас есть видео, которое может принадлежать одному / нескольким жанрам, поэтому мы выбрали тип данных списка, сохранили в нем данные и сделали этот жанр GSI (глобальный вторичный индекс)
Я сталкиваюсь с несколькими проблемами.
1) Когда я определяю жанр как индекс, aws предоставляет только три типа данных (строковые, двоичные, числовые), не позволяя нам хранить данные типа списка. Это дает неожиданную ошибку типа данных.
2) Если я не определяю его как индекс, мне не разрешается извлекать данные. DynamoDB запрашивает ключ хеша, что в моем случае невозможно, так как я получаю список, который не должен зависеть от ключа хеша (первичный ключ).
{
"description": "********",
"genre": [
"Kids",
"Documentary"
],
"language": "******",
"status": "0",
"thumb_url": "******",
"title": "******",
"uploaded_by": "****** ",
"url": "******",
"video_id": 1330051052
}
Код для получения данных
$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"),
)
),
),
));
В приведенном выше коде я ищу видео в жанре Kids. но он возвращает пустое значение и выдает ошибку, если я не объявляю жанр индексом. Одно и то же видео может принадлежать нескольким жанрам.
Так есть ли в любом случае, что я могу искать внутри списка ИЛИ я не использую API правильно? Помощь всегда ценится.