Amazon dynamodb DynamoDB“如何设置”;反向查找GS“;

Amazon dynamodb DynamoDB“如何设置”;反向查找GS“;,amazon-dynamodb,Amazon Dynamodb,我试图弄清楚如何在DyamoDB中实现反向查找GSI。今年,我在reInvent参加了一个关于DynamoDB的精彩演讲()。在演讲开始44分钟左右,提出了反向查找GSI的想法。我不知道如何在迪纳摩实现这一点 我想添加一个GSI来执行反向查找 我目前的计划是: 我希望能够仅查询CXSK。我计划重载CXSK,并希望能够使用该密钥的开头进行查询 我不确定我在创建GSI时遗漏了什么。我不确定在以下领域应该做什么。我也很好奇,使用重载排序键是否有意义 假设这是您的原始表格 | pk | sk

我试图弄清楚如何在DyamoDB中实现反向查找GSI。今年,我在reInvent参加了一个关于DynamoDB的精彩演讲()。在演讲开始44分钟左右,提出了反向查找GSI的想法。我不知道如何在迪纳摩实现这一点

我想添加一个GSI来执行反向查找

我目前的计划是:

我希望能够仅查询CXSK。我计划重载CXSK,并希望能够使用该密钥的开头进行查询

我不确定我在创建GSI时遗漏了什么。我不确定在以下领域应该做什么。我也很好奇,使用重载排序键是否有意义


假设这是您的原始表格

| pk   |  sk   |  prop1     |   prop2 | ...
| a    |  b    |  xyz       |   abc
| a    |  c    |  lmn       |   opq
| b    |  x    |  rst       |   lme   
| b    |  b    |  tuv       |   opq
在上表中,您可以执行如下查询

选择*其中pk=a
它将返回第1行和第2行

选择*其中pk=a和sk=b
它将返回第1行

现在进行反向查找意味着您希望通过其他字段名聚合数据。 比如说,我们想通过sk来完成。为此,我们将创建一个GSI,sk作为partitionKey,pk作为SortKey。这个表的视图看起来像

这将是您的GSI1表

| pk   |  sk   |  prop1     |   prop2 | ...
| b    |  a    |  xyz       |   abc
| c    |  a    |  lmn       |   opq
| x    |  b    |  rst       |   lme   
| b    |  b    |  tuv       |   opq
在上表中,您可以执行如下查询

选择*where pk=b
它将返回第1行和第4行

选择*其中pk=b和sk=a
它将返回第1行


考虑到上面的描述,在您的情况下,您应该创建具有pk作为CXSK和sk作为USERId的GSI,这是有意义的。我只能查询=,=,介于,以开始。是否可以使用“包含”或“存在”进行查询?我假设“contains”和“exists”仅用于过滤器。