키 조건 표현식에서는 첫 번째 문자가 a-z
또는 A-Z
이고 나머지 문자(두 번째 문자부터 시작, 있는 경우)가 a-z
, A-Z
또는 0-9
인 경우에 한해 속성 이름은 아무거나 사용할 수 있습니다. 또한 속성 이름이 DynamoDB 예약어가 되어서는 안 됩니다. (예약어 전체 목록은 DynamoDB의 예약어 단원을 참조하세요.) 속성 이름이 이러한 요건을 만족하지 않으면 표현식 속성 이름을 자리 표시자로 정의해야 합니다. 자세한 내용은 DynamoDB의 표현식 속성 이름(별칭) 단원을 참조하십시오.
일정한 파티션 키 값을 갖는 항목들에 대해서는 DynamoDB가 정렬 키 값을 기준으로 순서를 정렬하여 모두 함께 저장합니다. Query
작업을 할 때는 DynamoDB는 정렬된 순서대로 항목을 가져온 다음 FilterExpression
과 모든 KeyConditionExpression
(있는 경우)을 사용해 항목을 처리합니다. 그러면 클라이언트에게는 Query
결과만 다시 보내집니다.
Query
작업은 항상 결과 집합을 반환합니다. 일치하는 항목이 없다면 결과 집합은 비어 있습니다.
Query
결과는 항상 정렬 키 값을 기준으로 정렬됩니다. 정렬 키의 데이터 형식이 Number
이면 결과가 숫자 순서대로 반환됩니다. 그렇지 않으면 결과가 UTF-8 바이트 순서로 반환됩니다. 기본적으로 정렬 순서는 오름차순입니다. 오름차순을 역순으로 바꾸려면 ScanIndexForward
파라미터를 false
로 설정하면 됩니다.
단일 Query
작업은 최대 1MB의 데이터를 가져올 수 있습니다. 이러한 크기 제한은 FilterExpression
또는 ProjectionExpression
이 결과에 반영되기 전에 적용됩니다. 응답에 LastEvaluatedKey
가 존재하고 null이 아니라면 결과 집합을 페이지 매김해야 합니다(DynamoDB의 테이블 쿼리 결과 페이지 매김 참조).
키 조건 표현식 예제
검색 기준을 지정하려면 테이블 또는 인덱스에서 읽을 항목을 결정하는 문자열인 키 조건 표현식을 사용합니다.
파티션 키 이름 및 값은 등식 조건으로 지정해야 합니다. 키 조건 표현식에는 키가 아닌 속성을 사용할 수 없습니다.
정렬 키의 두 번째 조건(있는 경우)은 옵션으로 입력할 수 있습니다. 단, 정렬 키 조건은 다음 중 한 가지 비교 연산자를 사용해야 합니다.
-
- 속성a
=b
a
가 값b
와 같은 경우 true -
-a
<b
a
가b
보다 작은 경우 true -
-a
<=b
a
가b
보다 작거나 같은 경우 true -
-a
>b
a
가b
보다 큰 경우 true -
-a
>=b
a
가b
보다 크거나 같은 경우 true -
-a
BETWEENb
ANDc
a
가b
보다 크거나 같고c
보다 작거나 같은 경우 true
다음 함수도 지원됩니다.
-
begins_with (
-a
,substr
)
속성 값이 특정 하위 문자열로 시작하는 경우 truea
다음 AWS Command Line Interface(AWS CLI) 예제는 키 조건 표현식의 사용을 보여 줍니다. 이 표현식들은 실제 값이 아닌 자리 표시자(:name
및 :sub
)를 사용합니다. 자세한 내용은 DynamoDB의 표현식 속성 이름(별칭) 및 DynamoDB에서 표현식 속성 값 사용 단원을 참조하세요.
예
Thread
테이블에 대한 쿼리를 실행하여 특정 ForumName
(파티션 키)을 찾습니다. 쿼리 결과에 따라 ForumName
값을 갖는 항목을 모두 읽어옵니다. 정렬 키(Subject
)가 KeyConditionExpression
에 추가되지 않았기 때문입니다.
aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name" \ --expression-attribute-values '{":name":{"S":"Amazon DynamoDB"}}'
예
Thread
테이블에 대한 쿼리를 실행하여 특정 ForumName
(파티션 키)을 찾습니다. 하지만 이번에는 Subject
(정렬 키)를 갖는 항목만 반환됩니다.
aws dynamodb query \ --table-name Thread \ --key-condition-expression "ForumName = :name and Subject = :sub" \ --expression-attribute-values file://values.json
--expression-attribute-values
의 인수는 values.json
파일에 저장됩니다.
{
":name":{"S":"Amazon DynamoDB"},
":sub":{"S":"DynamoDB Thread 1"}
}
예
Reply
테이블에 대해 쿼리를 실행하여 특정 Id
(파티션 키)를 찾습니다. 하지만 ReplyDateTime
(정렬 키)이 몇 가지 문자로 시작되는 항목만 반환됩니다.
aws dynamodb query \ --table-name Reply \ --key-condition-expression "Id = :id and begins_with(ReplyDateTime, :dt)" \ --expression-attribute-values file://values.json
--expression-attribute-values
의 인수는 values.json
파일에 저장됩니다.
{
":id":{"S":"Amazon DynamoDB#DynamoDB Thread 1"},
":dt":{"S":"2015-09"}
}