0

我在 dynamoDb 中有一个带有主 hashKey 的表itemId。项也与父项有关系,因此除了通过它查询它们之外itemId,我还希望能够检索父项的所有子项,所以我添加了另一个属性parentId

现在我希望能够找到给定父母的所有孩子。阅读文档,我知道我需要创建一个二级索引,但我不明白我的 rangeKey 应该是什么以及如何在DynamoDBQueryExpression<Item>不设置范围条件的情况下构造 a 。

我想我错过了一些基本的东西......

4

1 回答 1

1

我假设您的表看起来像这样:

itemId (hash key), parentId

您需要在此表上创建一个全局二级索引,如下所示:

parentId (hash key), itemId (range key)

现在,您可以在 KeyConditionExpression 中设置父 ID 的位置进行查询

这是一个用 Ruby 编写的示例:

resp = Aws::DynamoDB::Client.new.query(
  table_name: "MyTableName",
  select: "SPECIFIC_ATTRIBUTES",
  attributes_to_get: ["parentId", "itemId"],
  key_condition_expression: "parentId = <parent_whose_children_you_want>",
  exclusive_start_key: <query_start_key_from_prev_query>
)

一旦 DynamoDB 达到 1MB 的数据,它将返回并为您提供 LastEvaluatedKey,您可以将其用作下一个查询的 ExclusiveStartKey。这样您就可以分页浏览您的数据库。

于 2015-10-04T03:11:48.810 回答