dynamodb,如何在查询操作中使用主键`in`句子?

时间:2016-09-28 09:34:17

标签: amazon-web-services amazon-dynamodb

我想根据多个主键查询一组属性。 例如我想使用primary_key1和primary_key2查询两条记录。 我像这样使用了KeyConditionExpression KeyConditionExpression: "primary_key in (:key1, key2)" ExpressionAttributeValues: { ... }

但在KeyConditionExpression中使用句子时出错。

我得到的错误是:

  

在KeyConditionExpression中使用in句子时出现语法错误

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

KeyConditions不支持IN运算符。此外,它不支持OR运算符。

但是,它支持AND运算符通过散列键和排序键过滤数据。

  

对于KeyConditions,只有以下比较运算符   支持:

     

情商| LE | LT | GE | GT | BEGINS_WITH | BETWEEN

     

KeyConditionExpression - (字符串)指定键的条件   查询操作要检索的项目的值。

     

条件必须对单个分区键执行相等性测试   值。该条件还可以执行几个比较测试之一   在单个排序键值上。查询可以使用KeyConditionExpression来   检索具有给定分区键值的一个项目并对键值进行排序,   或几个具有相同分区键值但不同的项目   排序键值。

您可以扫描,而不是使用FilterExpression进行查询。但是,请注意,在DynamoDB中扫描是一项代价高昂的操作,可能不是您正在寻找的解决方案。

var params = {
        TableName: "Movies",    
        FilterExpression: "title IN (:titlevalue1, :titlevalue2)",
        ExpressionAttributeValues: {
            ":titlevalue1": "The Big New Movie 2012",
            ":titlevalue2": "The Big New Movie",

        }
    };

另一种选择是使用不同的密钥多次查询数据库。