DynamoDb串联时间戳记,包括时间戳记

时间:2019-04-11 08:33:41

标签: c# timestamp amazon-dynamodb

我有一个具有以下键结构的DynamoDb表,

Hash     Range
string   string|string|timestamp(string)
12345    ABC|DEF|123456789

我希望能够获得时间戳等于或小于范围键中时间戳部分的项目,但是我不确定我的实现是否正确,或者不确定是否存在这种情况不起作用,所以我想征求第二意见。

这是我的实现:

var asyncSearch = _dynamoDbContext.QueryAsync<PricingModel>(entityKeyId,
                    new DynamoDBOperationConfig
                    {
                        OverrideTableName = _config.Value.PricingModelTableNameOverride,
                        QueryFilter = new List<ScanCondition>
                        {
                            new ScanCondition(nameof(PricingModel.EntityKeyId),
                                ScanOperator.Equal,
                                entityKeyId),
                            new ScanCondition(nameof(PricingModel.SortKeyId),
                                ScanOperator.LessThanOrEqual,
                                sortKeyId)
                        }
                    });

1 个答案:

答案 0 :(得分:1)

这里几乎没有什么信息(例如,范围键的其他组件是什么,以及它们将用于什么)。但是,您似乎需要将时间戳记的位置移到范围键的开头。

DynamoDB将通过范围键对分区键中的项目进行排序。如果希望它们按日期排序,则需要时间戳作为范围键的第一部分。

由于范围键是一个字符串,因此请确保选择一个自然排序为字符串的日期格式。

编辑:ISO 8601字符串(例如2019-04-11T11:37:00Z)自然可以作为字符串进行排序,并且易于阅读。

编辑:然后,您可以使用LT关键条件运算符小于,并使用BEGINS_WITH获得确切的时间戳记