グローバルセカンダリインデックスとしてfeed_guid
を含むDynamoDBテーブルがあります。そのテーブルでfeed_guid
のセットを使用してクエリを実行します。 feed_guid
は私の主キーではないため、getBatchItem
を使用できません。次の方法を試したところ、このエラーが発生しました。
KeyConditionExpressionで使用されている無効な演算子:OR
$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);
ここで必要なことを実現するには、2つの別々のクエリを結合する必要があります。
現在、DynamoDBの Query API は、検索するアイテムを制限し、最終的にはここで説明したようなより複雑なクエリのコストを削減するため、KeyConditionExpressionでのみハッシュAND範囲キーの条件を1つだけサポートします。
OR条件は使用できません。可能であればrangeAttributeName BETWEEN:rangeval1 AND:rangeval2を使用するか、feed_guid IN(:v_guid1、:v_guid2)を使用してください。
ExpressionAttributeValues および KeyConditionExpression を参照してください