Поиск в списке типов данных в 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 правильно? Помощь всегда ценится.

Ответы на вопрос(1)

Ваш ответ на вопрос