2016-10-19 3 views
0

ExpressionAttribute와 특정 ID를 사용하여 내 테이블에서 하나의 항목을 가져올 수 있습니다. 지난 30 일 간 항목 목록을 얻으려면 어떻게해야합니까?DynamoDB에서 지난 30 일 데이터를 가져 오는 방법

동등한 SQL의 한 Statment는 다음과 같이 보일 것이다 :

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 ]); 

답변

0

하지 않는 한 iddate_time이라는 정렬 (범위라고도 함) 키가 쿼리가 작동하지 않습니다. 네가 그걸 쓴 것처럼.

DynanoDB를 사용하면 관계형 데이터베이스와 달리 파티션 키와 정렬 키만 쿼리 할 수 ​​있습니다.

당신이 필요로하는 경우

이 옵션은 정렬 또는 파티션 키가 아닌 속성에 따라 조회하려면 : 필터

  1. 스캔 - 당신은 쿼리의 대부분을 검색 할 것으로 예상 할 때이 잘 작동 테이블

  2. 의 기록은 당신이 쿼리와 쿼리가 인덱스

를 사용하여 관심있는 속성을 포함하는 보조 인덱스를 생성
관련 문제