为什么在DynamoDB查询中没有**不等于**的比较?

时间:2017-07-09 15:34:40

标签: sql database amazon-web-services amazon-dynamodb

我尝试使用二级索引查询我的表 Tinpon ,产生分区键类别和sort-key tinponId 。我的目标是排除带有某些tinponIds的物品。我的第一个想法是进行负面比较: keyConditionExpression = "category = :category AND tinponId != :tinponId" 但只有相同的 = 比较。然后我尝试了serval其他方法(遗憾地不存在): keyConditionExpression = "category = :category NOT tinponId = :tinponId" keyConditionExpression = "category = :category AND tinponId <> :tinponId" keyConditionExpression = "category = :category AND tinponId < :tinponId AND tinponId > :tinponId" the AWS guide之后,没有不等于比较。为什么这样? 有没有办法查询除了id列表之外的DynamoDB,或者是检索一大堆项目并在以后手动过滤它们的唯一选项?

1 个答案:

答案 0 :(得分:16)

KeyConditionExpression不允许排序键不等于。但是,您可以使用FilterExpression中的&#34; Not Equals ie&lt;&gt;&#34;

KeyConditionExpression : 'category = :category',    
FilterExpression : 'tinponId  <> :tinponIdVal',
ExpressionAttributeValues : {
    ':category' : 'somevalue',
    ':tinponIdVal' :  'somevalue'
}