一尘不染

为什么DynamoDB查询中没有“不相等”比较?

sql

我尝试使用辅助索引查询我的表 Tinpon ,产生分区键 类别 和排序键 tinponId
。我的目标是排除具有某些tinponIds的项目。我的第一个想法是做一个否定的比较: keyConditionExpression ="category = :category AND tinponId != :tinponId" 但是只有一个相等的 =
比较。然后,我尝试了其他的服务方法(遗憾的是不存在): keyConditionExpression = "category = :categoryNOT tinponId = :tinponId" keyConditionExpression = "category = :category AND tinponId <> :tinponId" keyConditionExpression = "category = :category AND tinponId < :tinponId AND tinponId > :tinponId"
按照AWS指南,没有
不相等的 比较方法。为什么这样?有没有一种方法可以查询DynamoDB,但不包括ID列表,还是唯一的选项来检索全部项目并在以后手动过滤它们?


阅读 237

收藏
2021-03-17

共1个答案

一尘不染

KeyConditionExpression不允许不等于该排序键。但是,您可以使用 “不等同,即<>”FilterExpression

KeyConditionExpression : 'category = :category',    
FilterExpression : 'tinponId  <> :tinponIdVal',
ExpressionAttributeValues : {
    ':category' : 'somevalue',
    ':tinponIdVal' :  'somevalue'
}
2021-03-17