首页 > 解决方案 > dynamoDb 负载不适用于同时具有哈希键和范围键的表

问题描述

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

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

我无法理解第一个场景。发生了什么错误?如果表同时具有哈希键和范围键,或者我错过了一些重要的东西,我们是否不能使用 load(hashkey) ?

标签: amazon-web-servicesamazon-dynamodb

解决方案


如果我想有一个项目,你会得到错误。Load正在寻找与您的主键完全匹配的特定项目,但hash+range键是您的复合主键,而不仅仅是您的hash键。hash因此,当您拥有复合主键时,您不能简单地询问仅给出键的项目。可能有多个值,hash但您正在尝试以load单个项目为目标。你所能做的就是query因为你已经检索了多个项目

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

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


推荐阅读