Dynamodb-Abfrage-Fehler - Abfrage-key-Zustand, nicht unterstützt
Ich versuche Abfrage meiner dynamodb-Tabelle, um feed_guid und status_id = 1. Aber es gibt Abfrage-key-Bedingung wird nicht unterstützt Fehler.
Finden Sie mein schema für die Tabelle und Abfrage.
$result =$dynamodbClient->createTable(array(
'TableName' => 'feed',
'AttributeDefinitions' => array(
array('AttributeName' => 'user_id', 'AttributeType' => 'S'),
array('AttributeName' => 'feed_guid', 'AttributeType' => 'S'),
array('AttributeName' => 'status_id', 'AttributeType' => 'N'),
),
'KeySchema' => array(
array('AttributeName' => 'feed_guid', 'KeyType' => 'HASH'),
),
'GlobalSecondaryIndexes' => array(
array(
'IndexName' => 'StatusIndex',
'ProvisionedThroughput' => array (
'ReadCapacityUnits' => 5,
'WriteCapacityUnits' => 5
),
'KeySchema' => array(
array(
'AttributeName' => 'status_id',
'KeyType' => 'HASH'
),
),
'Projection' => array(
'ProjectionType' => 'ALL'
)
),
array(
'IndexName' => 'UserIdIndex',
'ProvisionedThroughput' => array (
'ReadCapacityUnits' => 5,
'WriteCapacityUnits' => 5
),
'KeySchema' => array(
array(
'AttributeName' => 'user_id',
'KeyType' => 'HASH'
),
),
'Projection' => array(
'ProjectionType' => 'ALL'
)
)
),
'ProvisionedThroughput' => array(
'ReadCapacityUnits' => 10,
'WriteCapacityUnits' => 20
)
));
Folgende ist meine Abfrage zu aktualisieren, die Tabelle.
$result = $dynamodbClient->query(array(
'TableName' => 'feed',
'KeyConditionExpression' => 'feed_guid = :v_fid AND status_id = :v_sid ',
'ExpressionAttributeValues' => array(
':v_fid' => array('S' => '71a27f0547cd5456d9ee7c181b6cb2f8'),
':v_sid' => array('N' => 1)
),
'ConsistentRead' => false
));
- Sie haben nicht zu definieren, status_id, als Bereich zum ausführen dieser Abfrage
- So können wir nicht Benutzer sekundäre Indizes nur?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie bereits erwähnt, ist das Attribut enthalten in "KeyConditionExpression" sollte Ihre hash-Schlüssel nur dann, passend zu Ihrem Basis-schema für die Tabelle (in diesem Fall 'feed_guid'). Wenn Sie möchten, um eine Abfrage auf beide 'feed_guid' und 'status_id' ist, müssen Sie zum erstellen der Tabelle mit hash-und range-Taste, und geben Sie 'status_id' als range-Taste.
Globale sekundäre Indizes sind völlig unabhängig von der base-Tabelle, so dass in diesem Fall Sie können Abfragen die Indizes separat (mit 'status_id' in wichtigen Bedingung bei der Abfrage StatusIndex und verwenden Sie 'user_id' in wichtigen Bedingung bei der Abfrage UserIdIndex).
Bitte weitere Einzelheiten finden Sie auf Abfragen von globalen sekundären Indizes hier
=
; so erhalten Sie möglicherweise diese Fehlermeldung, wenn Sie versuchen, verwenden Sie>=
,<
,begins_with
etc in den hash-basierten Zustand von Ihrem Zustand Ausdruck.