В 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 добавлен в ….
Согласно документам AWS (ссылка на сайткажется, что query
операция не поддерживает NE
оператор:
Операции сканирования поддерживают все доступные операторы сравнения. Операции запроса поддерживают подмножество доступных операторов сравнения: EQ, LE, LT, GE, GT, BETWEEN и BEGINS_WITH.
scan
операция поддерживает это.
Других решений пока нет …