【问题标题】:DynamoDB NOT EQUALS on GSI sort keyGSI 排序键上的 DynamoDB 不等于
【发布时间】:2020-05-20 05:57:46
【问题描述】:

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

表格如下所示:

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

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

AId = 1 and BId != 2.

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

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

因此,此时对我来说唯一显而易见的解决方案是通过分区键进行查询,然后将其过滤掉客户端。

【问题讨论】:

    标签: amazon-dynamodb dynamodb-queries


    【解决方案1】:

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

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

    AId = 1 and BId < 2

    AId = 1 and Bid > 2

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

    【讨论】:

    • 其实是一个字符串,我只是想举个简单的例子,明天我试试看再回复你。
    • >< 与字符串一起使用时要小心。在 javascript 中,"20" > "101" 的计算结果为 true
    • @AnkitDeshpande 应该无关紧要,因为 OP 正在寻找!=
    • 您也可以使用过滤表达式来删除您不想要的。如果您的记录很小(可能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-12
    • 1970-01-01
    相关资源
    最近更新 更多