Php 尝试的条件约束在dynamodb中不是可索引的操作问题
在DynamoDB中,除了PHP中的Php 尝试的条件约束在dynamodb中不是可索引的操作问题,php,amazon-web-services,amazon-ec2,amazon-dynamodb,Php,Amazon Web Services,Amazon Ec2,Amazon Dynamodb,在DynamoDB中,除了PHP中的EQ之外,我的查询不使用ComparisonOperator。我正在使用全局二级索引: $response = $client->query(array( "TableName" => $tableName, "IndexName" => "topRating", // GSI index name "KeyConditions" => array( "rating" => array(
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
作为哈希键来创建toprrating
GSI
答复如下:
致命错误:未捕获Aws\DynamoDb\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文档(),似乎查询
操作不支持NE
操作符:
扫描操作支持所有可用的比较运算符。查询操作支持可用比较运算符的子集:EQ、LE、LT、GE、GT、BETWEEN和以开头
该操作确实支持此操作。响应是什么?请编辑您的问题,并将输出粘贴到之间,也可以删除或假装敏感/泄露信息,如个人文件夹名称和请求id's@ManeatingKoala您能帮助我吗?aws查询是否支持除EQ以外的任何其他比较运算符?实际上,当我使用LE时,它显示“不支持查询键条件”。您使用的是哪个SDK版本?我的回答显然适用于旧版本。在版本2.7.2()的文档中,说明支持
NE
运算符(搜索网页以查找ComparisonOperator)。说:“在DynamoDB中,除了为哈希键指定等于外,没有其他方法可以指定其他条件。”