Database 为什么DynamoDB查询中没有**不相等**比较?

Database 为什么DynamoDB查询中没有**不相等**比较?,database,amazon-web-services,nosql,amazon-dynamodb,Database,Amazon Web Services,Nosql,Amazon Dynamodb,我尝试用一个二级索引查询我的表Tinpon,该索引生成一个分区键category和排序键tinponId。我的目标是排除带有某些tinponid的项目。我的第一个想法是做一个负面比较: keyConditionExpression=“category=:category AND tinponId!=:tinponId” 但只有相等的比较。然后我尝试了其他几种方法(遗憾的是不存在): keyConditionExpression=“category=:category NOT tinponI

我尝试用一个二级索引查询我的表Tinpon,该索引生成一个分区键category和排序键tinponId。我的目标是排除带有某些tinponid的项目。我的第一个想法是做一个负面比较:

keyConditionExpression=“category=:category AND tinponId!=:tinponId”
但只有相等的比较。然后我尝试了其他几种方法(遗憾的是不存在):

keyConditionExpression=“category=:category NOT tinponId=:tinponId”
keyConditionExpression=“category=:category和tinponId:tinponId”
keyConditionExpression=“category=:category AND tinponId<:tinponId AND tinponId>:tinponId”
下面没有不相等的比较。为什么会这样?
是否有一种方法可以查询不包含ID列表的DynamoDB,或者是检索一大堆项目并在以后手动筛选它们的唯一选项?

KeyConditionExpression不允许排序键不等于。但是,您可以在
过滤器表达式
中使用“Not Equals,即”

KeyConditionExpression : 'category = :category',    
FilterExpression : 'tinponId  <> :tinponIdVal',
ExpressionAttributeValues : {
    ':category' : 'somevalue',
    ':tinponIdVal' :  'somevalue'
}
KeyConditionExpression:'category=:category',
FilterExpression:'tinponId:tinponIdVal',
表达式属性值:{
“:类别”:“somevalue”,
“:tinponIdVal”:“somevalue”
}

Ok我的下一个问题是我选择了tinponId作为我的Tinpon表的主键,现在得到了错误
Filter表达式只能包含非主键属性
是否有其他解决方案,或者我是否必须更改表的设计以使用您建议的过滤方法?您必须使用GSI(并可能查询具有不同分区键的GSI)或更改主表的设计以具有不同的分区键。@要获得此答案,您需要用户查询或扫描操作。非常感谢…:)