因此,我有一个带有主键ID
和辅助键Time
的动态表,辅助键是数字/时间戳。现在,我想查询特定ID的最新记录。我试图构造这样的参数,但是不知道如何继续查询具有最大Time
的项目。
function get_snapshot(id, callback){
let params = {
TableName: "Table1",
KeyConditionExpression: "ID = :id and Time ", // here I stuck
ExpressionAttributeValues: {
":id": id
}
};
docClient.query(params, function(err, data){
... // process the fetched item here
})
}
我是这个领域的新手。新秀错误可能很多。任何帮助表示赞赏。
答案 0 :(得分:2)
在查询的关键条件下,您实际上并不需要Time
。例如,如果要获取10个最新项,则查询参数应如下所示:
let params = {
TableName: "Table1",
KeyConditionExpression: "ID = :id",
ExpressionAttributeValues: {
":id": id
},
ScanIndexForward: "false",
Limit: 1
};
ScanIndexForward: false
告诉DynamoDB,它应返回以最高排序键值开头的结果。 Limit: 1
告诉DynamoDB您只想获得前1个结果。
答案 1 :(得分:0)
补充一点,ScanIndexForward 是一个布尔值,不应该被引用。
所以
let params = {
TableName: "Table1",
KeyConditionExpression: "ID = :id",
ExpressionAttributeValues: {
":id": id
},
ScanIndexForward: false,
Limit: 1
};
感谢您的回答?