基于从dynamodb

问题描述:

表日期时间如何查询数据的姓名,地址,purchasedamount,dateCreated会 样本数据:基于从dynamodb

  1. “xxx1.xxx.com” “XXXXX1”,“no1.street”,2500,“10-01-2017 01:02:03”
  2. “xxx2.xxx.com”,“XXXXX2”,“no2.street”,2000, 01-2017 04:05:06“
  3. ”xxx3.xxx.com“,”XXXXX3“,”no3.street“,4050,”10-02-2017 07:08:09“
  4. “xxx4.xxx.com”, “XXXXX4”, “no4.street”,2800 “2017年11月2日10时11分12秒”

如何获取客户,其购买日“ 11-01-2017 00:00:00“至”10-02-2017 00:00:00“。

看看您的示例数据,我不觉得很容易做到这一点很不幸。我会说你需要在代码中执行它(扫描所有项目并在应用程序级别进行筛选)。

如果改变数据模型是一个选项:

最简单和推荐使用日期的方法/在DynamoDB倍是存储处于ISO8601格式,使用字符串数据类型。

ISO8601:日期和时间值按从大到小的时间单位排序:年,月(或星期),日,小时,分钟,秒和小数秒。该表示的字典顺序因此对应于时间顺序,除了涉及负数年份的日期表示之外。这允许日期自然地按照DynamoDB排序。

如果使用日期属性作为排序键/ LSI,它使您可以使用BETWEEN比较运算符让DynamoDB在两个日期(分区键内)之间查询以完成繁重的工作。

+0

4选项1:ISO8601格式数据类型字符串或数字,哪一个最好?有可能为现有表添加LSI。 – samson

+0

如果使用纪元时间(这也是TTL功能的工作方式),然后使用数字。如果使用ISO8601格式,请使用字符串。不幸的是,在现有的表上创建LSI是不可能的,它只是一个表创建活动。尽管创建GSI是可能的。您可以使用以下步骤使用触发器与LSI迁移到新表:https://www.abhayachauhan.com/?p = 136。 –