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

时间:2014-10-28 12:44:26

标签: 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(
            "ComparisonOperator" => "NE", // Only 'EQ' works
            "AttributeValueList" => array(
                array(Type::STRING => "1186") // Sample value
            )
        )
    ),
    "ScanIndexForward" => true,
    "limit" => 5
));

创建表时,我使用rating作为哈希键来创建topRating GSI

回复如下:

  

致命错误:未捕获的Aws \ DynamoDb \ Exception \ ValidationException:AWS   错误代码:ValidationException,状态代码:400,AWS Request ID:   XXXXXYYYYYZZZZ,AWS错误类型:客户端,AWS错误消息:已尝试   条件约束不是可索引操作,User-Agent:   aws-sdk-php2 / 2.7.0 Guzzle / 3.9.2 curl / 7.19.7 PHP / 5.4.30投入....

1 个答案:

答案 0 :(得分:0)

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

  

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

scan操作支持它。