在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
操作确实支持它。