DynamoDB:查询一组非顺序范围键中的范围键

时间:2017-02-10 23:39:56

标签: amazon-web-services amazon-dynamodb

我有一个使用散列键和排序(范围)键的表。我的范围键是一个uuid。我有一个案例,我有一组任意范围键,我想查询数据库使用DynamoDBMapper。它们绝不是顺序的,不幸的是,为了我的目的,它们无法顺序,因此我无法查询一系列键(即键在a和b之间)。有没有办法让查询条件搜索一组潜在值中的范围键?本质上是一个sql WHERE条件,如:rangeKey IN(val1,val2,...);

根据DynamoDBQueryExpression的文档,使用setKeyConditionExpression或setRangeKeyConditions似乎无法做到这一点。有没有有效的方法呢?或者,我最好的选择是迭代我的潜在值并使用load方法从数据库中单独检索它们?

1 个答案:

答案 0 :(得分:1)

根据文档hereIN不支持

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