Dynamodb返回所有排序结果

时间:2016-03-23 15:34:36

标签: amazon-dynamodb

我有一个简单的动力学模型:

id (partition key), timestamp_id (sort key)

我只想要的是从发电机中获取所有数据(使用限制等),但按timestamp_id排序。遗憾的是,扫描不会返回已排序的数据,而且我似乎无法查询空查询,除非我遗漏了某些内容。

2 个答案:

答案 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
}