0

プライマリ hashKey を持つ dynamoDb にテーブルがあります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 のデータに達すると、次のクエリの ExclusiveStartKey として使用できる LastEvaluatedKey が返されて提供されます。このようにして、DB をページングできます。

于 2015-10-04T03:11:48.810 に答える