DynamoDB查找最接近的整数键

问题描述 投票:1回答:1

我有一个dynamodb表,哈希为unix时间,primarykey为name

有没有办法获得最接近的unix时间,如果它找不到确切的时间?

因此,如果我正在寻找(123343445,约翰),它将返回(123343445,约翰)或下一个最近的可能(123343446,约翰)

理想情况下,我不想检查项目然后向上或向下迭代,直到找到匹配的时间,因为我不知道时间间隔是什么,并且在大多数情况下它将不相等。

database amazon-web-services amazon-dynamodb
1个回答
1
投票

这是nodejs中的一个示例,对于其他类似的语言。代码可能不完美,但伪代码是! :)

const params = {
    TableName: MyTableName,
    KeyConditionExpression: '#pk = :pk AND #sk >= :sk',
    Limit: 1,
    ScanIndexForward: true,
    ExpressionAttributeNames: {
      '#pk': 'name',
      '#sk': 'timestamp',
    },
    ExpressionAttributeValues: {
      ':pk': 'john', # may use some variable
      ':sk': '123343445', # may use some variable
    },
};

# /!\ Not sure about the exact syntax
new AWS.DynamoDB.DocumentClient()
  .query(params).promise()
  .then((item) => { console.log(item); });

请注意:

  • KeyConditionExpression将在给定时间戳(123343445)之后返回所有项目,
  • ScanIndexForward: true将从您的时间戳开始
  • Limit: 1将仅返回第一场比赛。

您可以使用其他语言或aws-cli,查找这些参数,它们应该可用。

如果您愿意,您可以对索引进行类似的查询,您所要做的就是在IndexName: 'STRING_VALUE',中添加params

© www.soinside.com 2019 - 2024. All rights reserved.