DynamoDB의 조건 및 필터 표현식, 연산자, 함수 - Amazon DynamoDB

DynamoDB의 조건 및 필터 표현식, 연산자, 함수

DynamoDB 테이블에서 데이터를 조작하려면 PutItem, UpdateItemDeleteItem 작업을 사용합니다. 이러한 데이터 조작 작업의 경우 조건 표현식을 지정하여 어떤 항목을 수정할지를 결정할 수 있습니다. 조건 표현식이 true로 평가되는 경우 작업이 성공합니다. 그렇지 않으면 작업이 실패합니다.

이 섹션에서는 Amazon DynamoDB에서 필터 표현식 및 조건 표현식을 작성하기 위한 기본 제공 함수와 키워드에 대해 살펴봅니다. DynamoDB를 사용한 함수 및 프로그래밍에 대한 자세한 내용은 DynamoDB 및 AWS SDK를 사용한 프로그래밍 및 DynamoDB API 참조를 참조하세요.

필터 및 조건 표현식 구문

아래의 구문 요약에서 피연산 함수는 다음과 같이 사용됩니다.

  • Id, Title, Description, ProductCategory 등의 최상위 속성

  • 내포 속성을 참조하는 문서 경로

condition-expression ::= operand comparator operand | operand BETWEEN operand AND operand | operand IN ( operand (',' operand (, ...) )) | function | condition AND condition | condition OR condition | NOT condition | ( condition ) comparator ::= = | <> | < | <= | > | >= function ::= attribute_exists (path) | attribute_not_exists (path) | attribute_type (path, type) | begins_with (path, substr) | contains (path, operand) | size (path)

비교 실행

다음 비교기를 사용하여 피연산자를 단일 값과 비교합니다.

  • a = b - ab와 같은 경우 true입니다.

  • a <> b - ab와 같지 않은 경우 true입니다.

  • a < b - ab보다 작은 경우 true입니다.

  • a <= b - ab보다 작거나 같은 경우 true입니다.

  • a > b - ab보다 큰 경우 true입니다.

  • a >= b - ab보다 크거나 같은 경우 true입니다.

BETWEENIN 키워드를 사용하여 피연산 함수와 값의 범위 또는 열거된 값 목록을 비교합니다.

  • a BETWEEN b AND c - ab보다 크거나 같고 c보다 작거나 같은 경우 true입니다.

  • a IN (b, c, d) - a가 목록의 임의 값(b, c, d 값 등)과 같은 경우 true입니다. 목록에는 쉼표로 구분된 최대 100개의 값이 포함될 수 있습니다.

함수

다음의 함수를 사용하여 항목에 속성이 존재하는지 판단하거나 속성 값을 평가합니다. 함수 이름은 대/소문자를 구분합니다. 중첩 속성의 경우 전체 문서 경로를 제공해야 합니다.

함수 설명

attribute_exists (path)

path에 의해 지정된 속성이 항목에 포함되어 있는 경우 true입니다.

예: Product 테이블에 있는 항목에 측면 사진이 있는지를 확인합니다.

  • attribute_exists (#Pictures.#SideView)

attribute_not_exists (path)

path에 의해 지정된 속성이 항목에 포함되어 있지 않은 경우 true입니다.

예: 항목에 Manufacturer 속성이 포함되어 있는지 확인합니다.

  • attribute_not_exists (Manufacturer)

attribute_type (path, type)

지정된 경로의 속성이 특정 데이터 유형인 경우 true. type 파라미터는 반드시 다음 값 중 하나이어야 합니다.

  • S - 문자열

  • SS - 문자열 집합

  • N - 숫자

  • NS - 숫자 집합

  • B - 이진수

  • BS - 이진수 집합

  • BOOL - 부울

  • NULL - Null

  • L - 목록

  • M - 맵

type 파라미터에는 반드시 표현식 속성 값을 사용해야 합니다.

예: QuantityOnHand 속성이 List 유형인지 확인합니다. 위의 예에서 :v_subL 문자열의 자리 표시자입니다.

  • attribute_type (ProductReviews.FiveStar, :v_sub)

type 파라미터에는 반드시 표현식 속성 값을 사용해야 합니다.

begins_with (path, substr)

path에 의해 지정된 속성이 특정 하위 문자열로 시작하는 경우 true입니다.

예: 정면 사진 URL이 http://로 시작되는지 확인합니다.

  • begins_with (Pictures.FrontView, :v_sub)

수식 속성 값인 :v_subhttp://의 자리 표시자입니다.

contains (path, operand)

path에 의해 지정된 속성이 다음에 해당하는 경우 true입니다.

  • 특정 하위 문자열을 포함하는 String

  • 집합 내에 특정 요소를 포함하는 Set입니다.

  • 목록 내에 특정 요소를 포함하는 List입니다.

path에서 지정한 속성이 String인 경우 operandString이어야 합니다. path에서 지정한 속성이 Set인 경우 operand는 집합의 요소 형식이어야 합니다.

경로와 피연산자는 서로 달라야 합니다. 즉, contains (a, a)는 오류를 반환합니다.

예: Brand 속성에 하위 문자열 Company가 포함되어 있는지 확인합니다.

  • contains (Brand, :v_sub)

수식 속성 값인 :v_subCompany의 자리 표시자입니다.

예: 빨간색 제품 색상을 선택할 수 있는지 확인합니다.

  • contains (Color, :v_sub)

수식 속성 값인 :v_subRed의 자리 표시자입니다.

size (path)

속성의 크기를 나타내는 숫자가 반환됩니다. size를 사용하는 데 유효한 데이터 유형은 다음과 같습니다.

속성이 String 유형인 경우, size에서는 문자열의 길이가 반환됩니다.

예: Brand 문자열이 20자 이하인지 확인합니다. 수식 속성 값인 :v_sub20의 자리 표시자입니다.

  • size (Brand) <= :v_sub

속성이 Binary 유형인 경우, size에서는 속성 값의 바이트 수가 반환됩니다.

예: ProductCatalog 항목에 사용 중인 제품의 동영상 클립이 포함된 VideoClip이라는 바이너리 속성이 있는 경우를 가정할 수 있습니다. 다음 수식은 VideoClip이 64,000 바이트를 초과하는지 확인합니다. 수식 속성 값인 :v_sub64000의 자리 표시자입니다.

  • size(VideoClip) > :v_sub

속성이 Set 데이터 유형인 경우, size에서는 집합에 포함된 요소의 개수가 반환됩니다.

예: 한 가지 이상의 제품 색상을 선택할 수 있는지 확인합니다. 수식 속성 값인 :v_sub1의 자리 표시자입니다.

  • size (Color) < :v_sub

속성이 List 또는 Map 유형인 경우, size에서는 집합에 포함된 요소의 개수가 반환됩니다.

예: OneStar 리뷰의 개수가 특정 임계 값을 초과하는지 확인합니다. 수식 속성 값인 :v_sub3의 자리 표시자입니다.

  • size(ProductReviews.OneStar) > :v_sub

논리 평가

AND, ORNOT 키워드를 사용하여 논리 평가를 수행합니다. 아래의 목록에서 ab는 평가될 조건을 나타냅니다.

  • a AND b - ab가 모두 true인 경우 true입니다.

  • a OR b - a 또는 b(또는 둘 모두)가 true인 경우 true입니다.

  • NOT a - a가 false인 경우 true입니다. a가 true인 경우 false입니다.

다음은 연산에서 AND를 사용한 코드 예제입니다.

dynamodb-local (*)> select * from exprtest where a > 3 and a < 5;

괄호

논리 평가의 우선 순위를 변경하려면 괄호를 사용합니다. 예를 들어 ab 조건이 true이고 c 조건이 false인 경우를 가정할 수 있습니다. 다음 수식들은 true로 평가됩니다.

  • a OR b AND c

그러나 조건을 괄호로 묶으면 해당 조건을 먼저 평가하게 됩니다. 예를 들어 아래의 경우에는 false로 평가됩니다.

  • (a OR b) AND c

참고

수식에 괄호를 포함시킬 수 있습니다. 가장 안쪽에 위치한 괄호부터 먼저 평가됩니다.

다음은 논리 평가에 괄호가 포함된 코드 예제입니다.

dynamodb-local (*)> select * from exprtest where attribute_type(b, string) or ( a = 5 and c = “coffee”);

조건식의 우선 순위

DynamoDB는 다음의 우선 순위 규칙을 사용하여 왼쪽에서 오른쪽 방향으로 조건식을 평가합니다.

  • = <> < <= > >=

  • IN

  • BETWEEN

  • attribute_exists attribute_not_exists begins_with contains

  • 괄호

  • NOT

  • AND

  • OR