DynamoDB仅按二级索引查询

时间:2019-01-30 00:16:04

标签: amazon-web-services amazon-dynamodb

我将用户帐户存储在DynamoDB中:

{
  email: 'user1@xxx.com',
  expires: 1548807053247,
}

我的哈希键是email字段。

我想添加一个日常计划任务,它将为所有即将过期的帐户(在接下来的14天内)发送一封提醒电子邮件。

为此,我需要仅在expires字段上进行查询-不使用哈希键。

我假设我需要在该字段上定义一个二级索引(可能是全局索引,而不是局部索引?),但是我不确定如何为它编写适当的查询。

我正在使用AWS.DynamoDB.DocumentClient来访问表格,谢谢!

2 个答案:

答案 0 :(得分:3)

在调用查询API时,只需指定TableName之外的IndexName。 (Docs。)其余部分与查询表相同。

答案 1 :(得分:1)

我经常遇到相同的问题

我要做的是,添加另一个名为“ all”的属性,其值为1
(您可以使用任何键/值)
然后创建一个GSI

  • 分区:全部
  • 排序:过期

要进行一些优化,您只能将此属性添加到活动用户

或者您可以添加属性活动编号,并将其用作GSI的分区键

这是效率很低的分区键分配
因为所有项目都属于一个分区 但我发现没有其他办法

我很高兴听到另一种解决方案