我可以使用ExpressionAttribute和特定的id从我的表中获取一个项目。我怎样才能获得过去30天内的物品清单?
等效的SQL语句如下所示:
select * from tablename datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
以下是我尝试的代码:
$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 ]);
答案 0 :(得分:0)
除非您的表具有名为id
的分区键和名为date_time
的排序(也称为范围)键,否则您的查询将无法按您编写的方式运行。
使用DynanoDB,与关系数据库不同,您只能查询分区键和排序键。
如果您需要根据不是排序键或分区键的属性进行查询,则选项为:
使用过滤器扫描 - 当您希望查询检索表中的大多数记录时,此方法很有效
创建一个二级索引,其中包含您对查询感兴趣的属性以及使用索引进行查询