【问题标题】:Querying items by secondary index with only secondary hashKey, no rangeKey按二级索引查询项目,只有二级hashKey,没有rangeKey
【发布时间】:2015-10-03 06:01:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: amazon-dynamodb aws-java-sdk


    【解决方案1】:

    我假设您的表格如下所示:

    itemId (hash key), parentId

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

    parentId (hash key), itemId (range key)

    现在,您可以在 KeyConditionExpression 中设置父 ID 的地方执行 Query

    这是一个用 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。通过这种方式,您可以分页浏览您的数据库。

    【讨论】:

    • 很高兴听到!您能否将我的回复标记为您问题的答案?
    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 2019-10-08
    • 1970-01-01
    • 2015-11-09
    • 2018-03-23
    相关资源
    最近更新 更多