尝试的条件约束不是dynamodb中的可索引操作问题


Attempted conditional constraint is not an indexable operation issue in dynamodb

在DynamoDB中,除了PHP中的EQ之外,我的查询无法使用ComparisonOperator。我正在使用全局二级索引:

$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''DynmoDb''Exception''ValidationException:Aws错误代码:ValidationException,状态代码:400,AWS请求ID:XXXXX YYYY ZZZZ,AWS错误类型:客户端,AWS错误消息:已尝试条件约束不是可索引操作,用户代理:aws-sdk-php2/2.7.0 Guzzle/3.9.2 curl/7.19.7 PHP/5.4.30被抛出。。。。

根据AWS文档(链接),query操作似乎不支持NE运算符:

扫描操作支持所有可用的比较运算符。查询操作支持可用比较运算符的子集:EQ、LE、LT、GE、GT、BETWEEN和BEGINS_WITH。

scan操作确实支持它。