참고
가능하면 이러한 레거시 파라미터 대신 새 표현식 파라미터를 사용하는 것이 좋습니다. 자세한 내용은 DynamoDB에서 표현식 사용 단원을 참조하십시오. 이 파라미터를 대체하는 새 파라미터에 대한 자세한 내용은 대신 KeyConditionExpression을 사용합니다. 섹션을 참조하세요.
레거시 조건 파라미터 KeyConditions
에는 Query
작업의 선택 기준이 포함됩니다. 테이블에 있는 쿼리의 경우, 테이블 기본 키 속성에 있는 조건만 가질 수 있습니다. EQ
조건으로 파티션 키 이름 및 값을 제공해야 합니다. 정렬 키의 두 번째 조건은 옵션으로 입력할 수 있습니다.
참고
정렬 키 조건을 제공하지 않으면 파티션 키가 일치하는 모든 항목이 검색됩니다. FilterExpression
또는 QueryFilter
가 있는 경우 항목이 검색된 후 적용됩니다.
인덱스에 있는 쿼리의 경우, 인덱스 키 속성에 있는 조건만 가질 수 있습니다. EQ
조건으로 인덱스 파티션 키 이름 및 값을 제공해야 합니다. 인덱스 정렬 키의 두 번째 조건은 옵션으로 입력할 수 있습니다.
각 KeyConditions
요소는 비교할 속성 이름 및 다음 파라미터로 구성됩니다.
-
AttributeValueList
- 제공된 속성에 대해 평가되는 하나 이상의 값. 목록에 있는 값의 개수는 사용되는ComparisonOperator
에 따라 달라집니다.숫자 유형의 경우 값 비교가 숫자입니다.
크다, 같다 또는 작다 등의 문자열 값 비교는 UTF-8 이진 인코딩을 사용하는 유니코드를 기준으로 합니다. 예를 들어
a
는A
보다 크고a
는B
보다 큽니다.Binary의 경우, DynamoDB가 이진수 값을 비교할 때 이진수 데이터의 각 바이트를 부호가 없는 것으로 처리합니다.
-
ComparisonOperator
- 속성을 평가하는 비교기. 예: 같다, 크다, 작다.KeyConditions
의 경우 다음 비교 연산자만 지원됩니다.EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN
다음은 이러한 비교 연산자에 대한 설명입니다.
-
EQ
: 같음.AttributeValueList
에는 문자열, 숫자, 이진수 유형의AttributeValue
하나만 포함될 수 있습니다(집합 유형 제외). 요청에서 지정한 형식과 다른 형식의AttributeValue
요소가 항목에 포함되어 있으면 값이 일치하지 않습니다. 예를 들어{"S":"6"}
은{"N":"6"}
과 같지 않습니다. 또한{"N":"6"}
은{"NS":["6", "2", "1"]}
과 같지 않습니다. -
LE
: 작거나 같음.AttributeValueList
에는 문자열, 숫자, 이진수 유형의AttributeValue
요소 하나만 포함될 수 있습니다(집합 유형 제외). 요청에서 제공된 형식과 다른 형식의AttributeValue
요소가 항목에 포함되어 있으면 값이 일치하지 않습니다. 예를 들어{"S":"6"}
은{"N":"6"}
과 같지 않습니다. 또한{"N":"6"}
은{"NS":["6", "2", "1"]}
과 비교할 수 없습니다. -
LT
: 작음.AttributeValueList
에는 문자열, 숫자, 이진수 유형의AttributeValue
하나만 포함될 수 있습니다(집합 유형 제외). 요청에서 제공된 형식과 다른 형식의AttributeValue
요소가 항목에 포함되어 있으면 값이 일치하지 않습니다. 예를 들어{"S":"6"}
은{"N":"6"}
과 같지 않습니다. 또한{"N":"6"}
은{"NS":["6", "2", "1"]}
과 비교할 수 없습니다. -
GE
: 크거나 같음.AttributeValueList
에는 문자열, 숫자, 이진수 유형의AttributeValue
요소 하나만 포함될 수 있습니다(집합 유형 제외). 요청에서 제공된 형식과 다른 형식의AttributeValue
요소가 항목에 포함되어 있으면 값이 일치하지 않습니다. 예를 들어{"S":"6"}
은{"N":"6"}
과 같지 않습니다. 또한{"N":"6"}
은{"NS":["6", "2", "1"]}
과 비교할 수 없습니다. -
GT
: 큼.AttributeValueList
에는 문자열, 숫자, 이진수 유형의AttributeValue
요소 하나만 포함될 수 있습니다(집합 유형 제외). 요청에서 제공된 형식과 다른 형식의AttributeValue
요소가 항목에 포함되어 있으면 값이 일치하지 않습니다. 예를 들어{"S":"6"}
은{"N":"6"}
과 같지 않습니다. 또한{"N":"6"}
은{"NS":["6", "2", "1"]}
과 비교할 수 없습니다. -
BEGINS_WITH
: 접두사 여부 확인.AttributeValueList
에는 문자열 또는 이진수 유형의AttributeValue
하나만 포함될 수 있습니다(숫자 또는 집합 유형 제외). 비교 대상의 속성은 문자열 또는 이진수 유형이 되어야 합니다(숫자 또는 집합 유형 제외). -
BETWEEN
: 첫 번째 값보다 크거나 같음 및 두 번째 값보다 작거나 같음.AttributeValueList
에는 문자열, 숫자 또는 이진수(집합 유형 제외) 중에서 동일한 형식으로 2개의AttributeValue
요소가 들어 있어야 합니다. 대상 값이 첫 번째 요소보다 크거나 같을 때, 그리고 두 번째 요소보다 작거나 같을 때 대상 속성이 일치합니다. 요청에서 제공된 형식과 다른 형식의AttributeValue
요소가 항목에 포함되어 있으면 값이 일치하지 않습니다. 예를 들어{"S":"6"}
은{"N":"6"}
과 비교할 수 없습니다. 또한{"N":"6"}
은{"NS":["6", "2", "1"]}
과 비교할 수 없습니다.
-
대신 KeyConditionExpression 사용 - 예
Music 테이블의 파티션 키와 동일한 파티션 키가 있는 여러 항목을 검색하길 원한다고 가정합니다. 다음 AWS CLI 예제에서와 같이 Query
요청을 KeyConditions
파라미터와 함께 사용할 수 있습니다.
aws dynamodb query \ --table-name Music \ --key-conditions '{ "Artist":{ "ComparisonOperator":"EQ", "AttributeValueList": [ {"S": "No One You Know"} ] }, "SongTitle":{ "ComparisonOperator":"BETWEEN", "AttributeValueList": [ {"S": "A"}, {"S": "M"} ] } }'
대신에 KeyConditionExpression
을 사용할 수 있습니다.
aws dynamodb query \ --table-name Music \ --key-condition-expression 'Artist = :a AND SongTitle BETWEEN :t1 AND :t2' \ --expression-attribute-values '{ ":a": {"S": "No One You Know"}, ":t1": {"S": "A"}, ":t2": {"S": "M"} }'