我有一个 dynamodb 表,其中哈希为 unix 时间,主键为名称
如果找不到准确的时间,有没有办法获得最接近的 Unix 时间?
因此,如果我正在搜索 (123343445, john),它将返回 (123343445, john) 或下一个最接近的值,可能是 (123343446, john)
理想情况下,我不想检查某个项目,然后向上或向下迭代,直到找到匹配的时间,因为我不知道时间间隔是多少,并且在大多数情况下它不会相等。
最佳答案
这里是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,查找这些参数,它们应该可用。
如果您愿意,您可以对索引执行类似的查询,您所要做的就是在 params
中添加 IndexName: 'STRING_VALUE',
。
关于database - DynamoDB 查找最近的整数键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49089466/