DynamoDB 在 GSI 排序键上不等于

DynamoDB NOT EQUALS on GSI sort key

如标题所示,我处于需要从发电机 table GSI 获取所有记录的情况,因为我知道哈希键并且我知道我想要的排序键避免。

table 看起来像这样:

Id - Primary Key,
AId - GSI hash key,
BId - GSI sort key

我需要一个高效的查询来通过这样的查询获取记录

AId = 1 and BId != 2.

DynamoDB 在查询散列键和排序键时不支持 <> 运算符,它仅出现在过滤器表达式中,但也不允许出现在任何主键字段中。

那么这里的解决方案是什么?扫描可能不是一个好主意,除非可以在分区上扫描,但这似乎也不被支持。

所以目前对我来说唯一明显的解决方案是通过分区键查询,然后将其从客户端过滤掉。

假设您的排序键实际上是数字,如您的示例所示...

那么您最好的选择是发出两个单独的查询..

AId = 1 and BId < 2

AId = 1 and Bid > 2

实际上,在我写这篇文章时...我认为无论排序键的类型如何,它都会起作用...