【问题标题】:Sorting, Skip and Limit(Skip) queries for Amazon DynamoDBAmazon DynamoDB 的排序、跳过和限制(跳过)查询
【发布时间】:2022-04-25 20:37:35
【问题描述】:

我是 AWS Lambda、Amazon DynamoDB 和无服务器的新手。我有一个用户表想要这样做。

  1. 我想在每个页面中获取记录分页获取 10 条记录 来自用户表,
  2. 我想对名称和电子邮件等列进行排序。这两个列都具有字符串数据类型。

我在 node.js 中使用无服务器。这里我附上了我的 serverless.yaml 文件

UserDynamoDbTable:
  Type: 'AWS::DynamoDB::Table'
  DeletionPolicy: Retain
  Properties:
    AttributeDefinitions:
      -
        AttributeName: id
        AttributeType: S
    KeySchema:
      -
        AttributeName: id
        KeyType: HASH
    ProvisionedThroughput:
      ReadCapacityUnits: 1
      WriteCapacityUnits: 1
    TableName: 'user'

为了排序,我正在尝试使用此查询

let params = {
     TableName: 'user',
     limit: 10,
     ScanIndexForward: false
};
dynamoDb.scan(params, (error, result) => { })

但我没有得到符合我要求的回复。 请在这里帮助我,我是新手。提前致谢。

【问题讨论】:

    标签: javascript node.js amazon-web-services aws-lambda amazon-dynamodb


    【解决方案1】:

    ScanIndexForward 仅适用于范围键。由于表不包含定义的范围键(即排序键),因此数据未排序。

    指定升序(true)或降序(false)遍历 指数。 DynamoDB 返回反映请求顺序的结果 由范围键确定。

    很遗憾,DynamoDB 无法按任何其他属性对数据进行排序。只能按范围键排序。

    【讨论】:

    • 感谢您的回答。我们可以在一个表中定义多个排序键吗?以及我们如何编写查询以对特定表进行排序?如果您有任何示例或有用的链接,那就太好了。提前致谢
    • 您最多可以使用不同的排序键创建 5 个本地二级索引。
    【解决方案2】:

    如果您需要解决此问题,最好的解决方案是添加二级全局索引。这本质上是您的表的副本,其中包含在此类场景中派上用场的适当排序键。

    Using Global Secondary Indexes in DynamoDB

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-20
      • 1970-01-01
      • 2015-08-28
      • 2019-05-31
      • 1970-01-01
      • 2023-04-09
      • 2016-04-28
      • 2018-05-03
      相关资源
      最近更新 更多