我想根据多个主键查询一组属性。
例如我想使用primary_key1和primary_key2查询两条记录。
我像这样使用了KeyConditionExpression
KeyConditionExpression: "primary_key in (:key1, key2)"
ExpressionAttributeValues: {
...
}
但在KeyConditionExpression中使用句子时出错。
我得到的错误是:
在KeyConditionExpression中使用
in
句子时出现语法错误
我该如何解决这个问题?
答案 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",
}
};
另一种选择是使用不同的密钥多次查询数据库。