如何在 dynamoDB 中拥有复合键?

How to have a composite key in dynamoDB?

我在 dynamo 中有以下 JSON:

{
  cdItem: "123456",
  dtItem: "2021-03-01" 
}

我的 hashkeycdItem。 我需要我的 dtItem 也是一把钥匙。因此,如果我发送具有相同 cdItem 但不同 dtItem 的项目,它会创建一个新记录并且不会更新现有记录。

我该怎么做?或者,是否可以这样做?

您可以通过多种方式实现这一点,它们取决于您的访问模式。

如果您想要请求一个您知道cdItemdtItem值的项目,您可以让分区过载通过连接它们来生成密钥,例如123456#2021-03-01 这样您就可以保留现有的 table.

更灵活的解决方案是使用 composite primary key,它是分区和排序键的组合。这需要您创建一个新的 table.

我会这样设置:

cdItem (Partition Key) dtItem (Sort Key
123456 2021-02-27
123456 2021-02-28
123456 2021-03-01
654321 2021-03-01

您必须在每个 PutItem 请求中提供这两个属性。 您还可以使用两个值调用 GetItem 来检索单个项目,您可以使用 Query [=] select 给定 cdItem 值的所有 dtItem 值35=] 以及对 dtItem.

的值进行一些过滤