如何从DynamoDB获取过去30天的数据

时间:2016-10-19 10:42:35

标签: amazon-dynamodb

我可以使用ExpressionAttribute和特定的id从我的表中获取一个项目。我怎样才能获得过去30天内的物品清单?

等效的SQL语句如下所示:

select * from tablename datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)

enter image description here

以下是我尝试的代码:

$sevenDaysAgo = date('Y-m-d H:i:s', strtotime('30 days')); 
echo $response = $dynamodb->query([ 'TableName' => 'notifications', 
                                    'KeyConditionExpression' => 'id = :id and date_time >= :datess', 
                                    'ExpressionAttributeValues' => [ 
                                       ':id' => ['S' => '350'],
                                       ':datess' => ['S' => $sevenDaysAgo] ], 
                                    'ProjectionExpression' => 'id',
                                    'ConsistentRead' => true ]);

1 个答案:

答案 0 :(得分:0)

除非您的表具有名为id的分区键和名为date_time的排序(也称为范围)键,否则您的查询将无法按您编写的方式运行。

使用DynanoDB,与关系数据库不同,您只能查询分区键和排序键。

如果您需要根据不是排序键或分区键的属性进行查询,则选项为:

  1. 使用过滤器扫描 - 当您希望查询检索表中的大多数记录时,此方法很有效

  2. 创建一个二级索引,其中包含您对查询感兴趣的属性以及使用索引进行查询