我有一个使用散列键和排序(范围)键的表。我的范围键是一个uuid。我有一个案例,我有一组任意范围键,我想查询数据库使用DynamoDBMapper。它们绝不是顺序的,不幸的是,为了我的目的,它们无法顺序,因此我无法查询一系列键(即键在a和b之间)。有没有办法让查询条件搜索一组潜在值中的范围键?本质上是一个sql WHERE条件,如:rangeKey IN(val1,val2,...);
根据DynamoDBQueryExpression的文档,使用setKeyConditionExpression或setRangeKeyConditions似乎无法做到这一点。有没有有效的方法呢?或者,我最好的选择是迭代我的潜在值并使用load方法从数据库中单独检索它们?
答案 0 :(得分:1)
IN
不支持 Query
操作:
排序键条件必须使用以下比较之一 操作符:
- a = b - 如果属性a等于值b
,则为true- a< b - 如果a小于b
,则为true- a< = b - 如果a小于或等于b
,则为真- a> b - 如果a大于b
,则为true- a> = b - 如果a大于或等于b
,则为true- a BETWEEN b AND c - 如果a大于或等于b且小于或等于c,则为真。
还支持以下功能:
starts_with(a,substr) - 如果属性a的值以。开头,则为true 特定的子串。
此外,您始终需要确切的哈希键才能执行Query
。如果您的用例没问题,则应Query
DynamoDB并在应用层应用IN
过滤器。
如果您没有确切的哈希密钥,请执行Scan
,它具有IN
过滤操作。文档here。