2

我正在使用带有 boto 的 dynamoDB,并且在我的表的设计/查询中遇到了一些问题。

我希望我的数据看起来像

+---------------------------------------+
hash_key    account_id    mykey
-----------------------------------------
1           12345         myvalue1
2           12345         myvalue2
3           12345         myvalue3
4           123456        myvalue4
+---------------------------------------+

然后检索帐户 12345 的所有数据。查看 boto 文档,我总是需要有可用的 hash_key。我知道如何查询这个标准的 SQL / MongoDB,但我找不到 boto 的解决方案。我认为这是可能的?谢谢!

编辑:这似乎有效

+---------------------------------------+
hash_key    range_key    mykey
-----------------------------------------
12345       12568        myvalue1
12345       53890        myvalue2
12345       12322        myvalue3
123456      23432        myvalue4
+---------------------------------------+

其次是

> res = table.query(hash_key='12345')
> for item in res:
>    print i

由于我想抓取账号#12345的所有条目,不管range_key,我需要查询而不是get_item

4

1 回答 1

5

我会使用 account_idhash_key和一些range_key来区分它们。

在 DynamoDB 中,主键由可选的 ( hash_key, range_key)组成。range_key这个元组必须是唯一的。请注意,您将需要整个元组来访问给定的元素get_item

拥有“auto_increment”hash_key是 SQL 世界的一个坏习惯。

如果您想了解更多关于这个主题的信息,我在 dynamodb-mapper 文档中写了一些关于建模数据的背景知识:http: //dynamodb-mapper.readthedocs.org/en/latest/api/model.html#auto-increment -何时使用

于 2012-09-18T20:47:26.960 回答