我尝试使用辅助索引查询我的表 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列表,还是唯一的选项来检索全部项目并在以后手动过滤它们?
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"
在KeyConditionExpression不允许不等于该排序键。但是,您可以使用 “不等同,即<>”在FilterExpression。
KeyConditionExpression
FilterExpression
KeyConditionExpression : 'category = :category', FilterExpression : 'tinponId <> :tinponIdVal', ExpressionAttributeValues : { ':category' : 'somevalue', ':tinponIdVal' : 'somevalue' }