我有一个dynamodb表,哈希为unix时间,primarykey为名称
有没有办法获得最接近的unix时间,如果它找不到确切的时间?
所以,如果我正在寻找(123343445,约翰),它将返回(123343445,约翰)或下一个最近的可能(123343446,约翰)
理想情况下,我不想检查项目然后向上或向下迭代,直到找到匹配的时间,因为我不知道时间间隔是什么,在大多数情况下它不会相等。
答案 0 :(得分: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
。