dynamoDb加载不适用于同时具有哈希键和范围键的表

时间:2018-10-25 09:10:06

标签: amazon-web-services amazon-dynamodb

我有一个同时具有哈希键和范围键的表。该表当前为空,我正在尝试使用通过将hashkey作为参数传递的load()从表中获取值,但是它什么也没有返回。我既没有得到NULL也没有任何异常。只是什么都没有发生。

但是如果我使用query()并至少使用查询表达式,我将得到列表,其大小为0,这是预期的。

在第一种情况下,我无法全神贯注。发生了什么错误?如果表同时具有哈希键和范围键,或者我们错过了一些重要的东西,就像我们不能使用load(hashkey)一样?

1 个答案:

答案 0 :(得分:0)

如果我有一个项目,您将得到错误。 Load正在寻找与您的主键完全匹配的特定项目,但是hash+range键是复合主键,而不仅仅是hash键。因此,当您拥有复合主键时,您不能简单地要求仅提供一个hash键的项。该hash上可能有多个值,但是您正在尝试针对单个项目的load。您只能做query,因为那样您就可以检索到多个项目

|  HashKey  |  RangeKey | 
|:---------:|----------:|
| SomeHash1 |  Range1   |
| SomeHash1 |  Range2   |
| SomeHash1 |  Range3   |
| SomeHash2 |  Range1   |

您想要load SomeHash1的图像。有3个项目,但是load用于检索具有主键的项目。