DynamoDB 筛选项不包含

DynamoDB filter items not contains

我有以下问题:

分区键 (pk) 和排序键 (sk):

pk   sk
1    ITEMS#1
1    ORDERS#1

2    ITEMS#1
3    ITEMS#2

如何检索所有不包含订单的 pk?我试过过滤器:

sk not contains "ORDERS"

但是 returns

pk   sk
1    ITEMS#1
2    ITEMS#1
3    ITEMS#2

我只想 return pk 2 和 3。

为了有效地做到这一点,您必须 pre-materialize 将 orders-or-not 事实放入您的数据中,并以这样一种方式构建事物,以便该事实被适当地索引并准备好使用。

例如,您可以在每个 PK 下创建一个项目,其 SK 为 META 用于关于该 PK 的元数据,并且在该项目上您可以具有 HasOrders 的属性,如果它存在在该项目集合中有任何订单。然后,您可以使用它作为 GSI 分区键来创建 GSI,并非常有效地找到所有具有查询订单的项目。

每次有人下第一笔订单时,您都必须更新 META。