Попытка условного ограничения не является проблемой индексируемой операции в DynamodB

В DynamoDB мой запрос не работает с ComparisonOperator, кроме EQ в PHP. Я использую глобальные вторичные индексы:

$response = $client->query(array(
"TableName" => $tableName,
"IndexName" => "topRating", // GSI index name
"KeyConditions" => array(
"rating" => array(
"ComparisonOperator" => "NE", // Only 'EQ' works
"AttributeValueList" => array(
array(Type::STRING => "1186") // Sample value
)
)
),
"ScanIndexForward" => true,
"limit" => 5
));

При создании таблицы я использовал rating как хеш-ключ для создания topRating GSI

Ответ таков:

Неустранимая ошибка: Uncaught Aws \ DynamoDb \ Exception \ ValidationException: AWS
Код ошибки: ValidationException, код состояния: 400, идентификатор запроса AWS:
XXXXXYYYYYZZZZ, Тип ошибки AWS: клиент, Сообщение об ошибке AWS: Попытка
условное ограничение не индексируемая операция, User-Agent:
aws-sdk-php2 / 2.7.0 Жрет / 3.9.2 curl / 7.19.7 PHP / 5.4.30 добавлен в ….

0

Решение

Согласно документам AWS (ссылка на сайткажется, что query операция не поддерживает NE оператор:

Операции сканирования поддерживают все доступные операторы сравнения. Операции запроса поддерживают подмножество доступных операторов сравнения: EQ, LE, LT, GE, GT, BETWEEN и BEGINS_WITH.

scan операция поддерживает это.

0

Другие решения

Других решений пока нет …