我有一个简单的动力学模型:
id (partition key), timestamp_id (sort key)
我只想要的是从发电机中获取所有数据(使用限制等),但按timestamp_id
排序。遗憾的是,扫描不会返回已排序的数据,而且我似乎无法查询空查询,除非我遗漏了某些内容。
答案 0 :(得分:0)
你无法通过timestamp_id对所有记录进行排序。
您只能按照&id;#39;
对timestamp_id进行排序dynamodb按您的复合键对结果进行排序。
所以在你的情况下你的行如下:
1,3
1,2
2,4
1,5
2,3
您的案例中的结果是:
1,2
1,3
1,5
2,3
2,4
如您所见,结果不仅仅按timestamp_id排序,而是按id-timestamp_id排序。
答案 1 :(得分:-1)
您可以创建GSI(我们将其命名为timestamp_id-index
):
我们将索引的分区键指定为名为fixed_val
的属性,并将我们的排序键指定为timestamp_id-index
。
fixed_val
将包含您想要的任何值,但它必须始终是该值,您必须从客户端知道它。为了这个例子,我们假设fixed_val
始终是1
。
GSI密钥不必是唯一的,因此如果有两个重复的timestamp_id
值,请不要担心。
您可以像这样查询表格:
var now = Date.now();
//...
{
TableName: "foo",
IndexName: "timestamp_id-index",
ExpressionAttributeNames: {
"#f": "fixed_value"
},
ExpressionAttributeValues: {
":f": 1,
},
KeyConditionExpression: "#f = :f",
// true -> ascending, false -> descending
ScanIndexForward: true
}