Suche in Liste Datentyp in Dynamo db aws

Wir verwenden dynamo db als Datenbanklösung für einen unserer Standorte. Wir speichern Daten in Dynamo-DB, wie unten angegeben.

Wir haben ein Video, das zu einem oder mehreren Genres gehören kann, also haben wir den Listendatentyp ausgewählt und darin Daten gespeichert und das Genre als GSI (Global Secondary Index) erstellt.

Ich stehe vor mehreren Problemen.

1) Wenn ich das Genre als Index definiere, bietet aws nur drei Datentypen (String, Binär, Zahl), sodass wir keine Listentypdaten speichern können. Es tritt ein unerwarteter Datentypfehler auf.

2) Wenn ich es nicht als Index definiere, darf ich die Daten nicht abrufen. DynamoDB fragt nach einem Hash-Schlüssel, was in meinem Fall nicht möglich ist, da ich eine Auflistung abrufe, die nicht von einem Hash-Schlüssel (Primärschlüssel) abhängen sollte.

{
  "description": "********",
  "genre": [
    "Kids",
    "Documentary"
  ],
  "language": "******",
  "status": "0",
  "thumb_url": "******",
  "title": "******",
  "uploaded_by": "****** ",
  "url": "******",
  "video_id": 1330051052
}

Code zum Abrufen von Daten

$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"),
                    )
                ),
            ),
        ));

Im obigen Code suche ich nach Videos im Kids-Genre. aber es gibt leer zurück und gibt Fehler, wenn ich Genre nicht als Index deklariere. Dasselbe Video kann mehreren Genres angehören.

So gibt es sowieso, dass ich in einer Liste suchen kann, ODER verwende ich die API nicht richtig? Hilfe wird immer geschätzt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage