2015-08-19 22 views
6

Ho una tabella dynamodb con "feed_guid" come indice secondario globale. Voglio interrogare con un set di feed_guid in quella tabella. Poiché "feed_guid" non è la mia chiave primaria, quindi non posso usare getBatchItem. Quando ho provato il seguente metodo, ho ricevuto questo errore "Operatore non valido utilizzato in KeyConditionExpression: OR".Query Dynamodb - Condizione OR in KeyConditionExpression

$options = array(
      'TableName' => 'feed', 
       'IndexName' => 'GuidIndex', 
       'KeyConditionExpression' => 'feed_guid = :v_guid1 or feed_guid = :v_guid2', 

       'ExpressionAttributeValues' => array (
        ':v_guid1' => array('S' => '8a8106e48bdbe81bf88d611f4b2104b5'), 
        ':v_guid2' => array('S' => '19cab76242a6d85717de64fe4f8acbd4') 
       ), 
       'Select' => 'ALL_ATTRIBUTES', 
      ); 
      $response = $dynamodbClient->query($options); 

risposta

2

Non è possibile utilizzare la condizione OR. Dovresti usare rangeAttributeName BETWEEN: rangeval1 AND: rangeval2 se possibile o feed_guid IN (: v_guid1,: v_guid2).

Vedi ExpressionAttributeValues e KeyConditionExpression

+1

Questo non funziona. Mostra l'errore "Operatore non valido utilizzato in KeyConditionExpression: IN". –

+0

Prova ad usare tra. IN è usato per ExpressionAttributeValues ​​ – user1697575

+0

Basta leggere prima la definizione. http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html#DDB-Query-request-KeyConditionExpression –

2

Al fine di ottenere ciò che si vuole qui, è necessario prendere l'unione di due query separate.

Attualmente, DynamoDB Query API supporta solo una condizione su Hash E Range Keys solo in KeyConditionExpression perché limita gli elementi ricercati e in definitiva riduce i costi di una query più complessa come quella che hai descritto qui.

+3

Puoi per esempio fare un esempio "Come usare l'unione di query?" Ogni dove nella documentazione di Amazon hanno descritto teoricamente. – TheTiger

Problemi correlati