Atlas SQL 문을 사용한 쿼리
이 페이지의 내용
이 페이지에서는 Atlas SQL 쿼리의 예시를 제공합니다. SQL 구문을 사용하여 collection을 쿼리하는 기본 예제와 FLATTEN
및 UNWIND
를 사용하여 중첩 데이터로 작업하는 고급 예제를 찾을 수 있습니다.
쿼리 예시
고급 구성 샘플 연합 데이터베이스 인스턴스 에 대해 다음 Atlas SQL 쿼리를 실행 하거나 자체 데이터를 읽도록 수정하세요.
참고
이 예제에서는 짧은 형식의 구문을 사용합니다.
SELECT 문
SELECT * FROM sessions;
Atlas SQL이 Sessions
컬렉션의 모든 문서를 반환합니다.
LIMIT 문
SELECT * FROM users LIMIT 2;
Atlas SQL이 Users
컬렉션에서 두 개의 문서를 반환합니다.
WHERE 문
SELECT * FROM users WHERE name = 'Jon Snow';
Atlas SQL은 사용자의 name
이 Jon Snow
인 Users
컬렉션에서 문서를 반환합니다.
FLATTEN 및 UNWIND
이 섹션에서는 문서 구조와 더 쉽게 상호 작용할 수 있는 두 가지 Atlas SQL 기능에 대해 설명합니다. 이는 고유한 Atlas SQL 기능입니다.
FLATTEN
FLATTEN
반구조화된 데이터(JSON의 이름-값 쌍)를 별도의 열로 평탄화합니다. 필드 이름은 해당 필드의 모든 값을 행에 담는 열 이름이 됩니다.
중첩된 문서를 평면화하는 구문은 FROM
절에서 데이터 원본 및 옵션과 함께 사용할 수 있는 FLATTEN
함수입니다.
SELECT * FROM FLATTEN(<data source> WITH DEPTH => <integer>, SEPARATOR => <string> )
변수 | 필요성 | 설명 |
---|---|---|
<data source> | 필수 사항 | 평면화할 데이터 소스입니다. |
DEPTH | 옵션 | 평활화할 하위 문서의 레벨 수를 나타내는 양의 정수입니다. 기본적으로 모든 수준의 하위 문서를 평면화합니다. |
SEPARATOR | 옵션 | 필드 이름을 연결할 때 구분 기호로 사용할 string입니다. 기본값은 _ 입니다. |
평면화 예시
예시 시나리오에서 customerInfo
컬렉션에는 다음과 같이 구성된 문서가 포함되어 있습니다.
{ id: 1, location: "New York", customer: { age: 50, email: "customer@email.com", satisfaction: 5 } }
SELECT * FROM customerInfo
쿼리를 실행하면 Atlas SQL은 다음과 같은 최상위 필드가 있는 문서를 반환합니다.
id | 1 |
location | "New York" |
customer | { 연령: 50, 이메일: "customer@email.com", 만족도: 5 } |
SELECT * FROM FLATTEN(customerInfo)
쿼리를 실행하면 Atlas SQL은 다음과 같은 최상위 필드가 있는 문서를 반환합니다.
id | 1 |
location | "New York" |
customer_age | 50 |
customer_email | "customer@email.com" |
customer_satisfaction | 5 |
FLATTEN
을 사용하면 원본 문서의 각 평면화된 필드가 결과 집합의 최상위 필드가 됩니다. 중첩 필드는 상위 필드 이름과 연결되며 기본 구분 기호인 _
로 구분됩니다.
Unwind
UNWIND
입력 데이터 소스에서 배열 필드를 분해하여 해당 배열의 각 항목에 대해 하나의 행을 출력합니다. 언와인드에 대해 자세히 알아보려면 $unwind 애그리게이션 단계 문서를 참조하세요.
배열 필드를 푸는 구문은 FROM
절에서 데이터 소스 및 옵션과 함께 사용할 수 있는 UNWIND
함수입니다.
SELECT * FROM UNWIND(<data source> WITH PATH => <array_path>, INDEX => <identifier>, OUTER => <bool> )
변수 | 필요성 | 설명 |
---|---|---|
<data source> | 필수 사항 | 풀려는 배열 필드의 소스입니다. |
PATH | 필수 사항 | 해제할 데이터 소스의 필드 경로입니다. |
INDEX | 옵션 | 이름을 입력하여 인덱스 열을 할당합니다. 생략하면 Atlas SQL에서 인덱스 필드를 만들지 않습니다. |
OUTER | 옵션 | null, 누락 또는 빈 배열 값이 있는 문서의 보존 여부를 나타내는 플래그입니다. true 인 경우 null, 누락 또는 빈 배열 값이 있는 문서가 보존됩니다. 기본값은 false 입니다. |
풀기(unwind) 예시
예시 시나리오에서 customerInfo
컬렉션에는 다음과 같이 구성된 문서가 포함되어 있습니다.
{ id: 1, location: "New York", customer: { age: 50, email: "customer@email.com", satisfaction: 5 }, visits: [ { year: 2020, score: 10 }, { year: 2021, score: 8 }, { year: 2022 score: 7 } ] }
SELECT * FROM customerInfo
쿼리를 실행하면 Atlas SQL은 다음과 같은 최상위 필드가 있는 문서를 반환합니다.
id | 1 |
location | "New York" |
customer | { 연령: 50, 이메일: "customer@email.com", 만족도: 5 } |
visits | [ { year: 2020, score: 10 }, { year: 2021, score: 8 }, { year: 2022, score: 7 } ] |
SELECT * FROM UNWIND(customerInfo WITH PATH => visits, INDEX => idx)
쿼리를 실행하면 Atlas SQL은 다음과 같은 최상위 필드가 있는 문서를 반환합니다.
id | 1 | 1 | 1 |
location | "New York" | "New York" | "New York" |
customer | { 연령: 50, 이메일: "customer@email.com", 만족도: 5 } | { 연령: 50, 이메일: "customer@email.com", 만족도: 5 } | { 연령: 50, 이메일: "customer@email.com", 만족도: 5 } |
idx | 0 | 1 | 2 |
visits | { year: 2020, score: 10 } | { year: 2021, score: 8 } | { year: 2022, score: 7 } |
UNWIND
를 PATH => visits
와 함께 사용하면 각 visits
객체가 테이블 행이 됩니다.
FLATTEN 및 UNwind 결합 예시
다음 예시는 FLATTEN
및 UNWIND
함수를 결합한 것입니다.
예시 시나리오에서 customerInfo
컬렉션에는 다음과 같이 구성된 문서가 포함되어 있습니다.
{ id: 1, location: "New York", customer: { age: 50, email: "customer@email.com", satisfaction: 5 }, visits: [ { year: 2020, score: 10 }, { year: 2021, score: 8 }, { year: 2022 score: 7 } ] }
SELECT * FROM customerInfo
쿼리를 실행하면 Atlas SQL은 다음과 같은 최상위 필드가 있는 문서를 반환합니다.
id | 1 |
location | "New York" |
satisfaction | 5 |
customer | { 연령: 50, 이메일: "customer@email.com", 만족도: 5 } |
visits | [ { year: 2020, score: 10 }, { year: 2021, score: 8 }, { year: 2022, score: 7 } ] |
Select * from FLATTEN(UNWIND(customerInfo WITH PATH => visits, INDEX => idx))
쿼리를 실행하면 Atlas SQL은 다음과 같은 최상위 필드가 있는 문서를 반환합니다.
id | 1 | 1 | 1 |
location | "New York" | "New York" | "New York" |
satisfaction | 5 | 5 | 5 |
customer_age | 50 | 50 | 50 |
customer_email | "customer@email.com" | "customer@email.com" | "customer@email.com" |
idx | 0 | 1 | 2 |
visits_year | 2020년 | 2021년 | 2022 |
visits_score | 10 | 8 | 7 |
FLATTEN
함수와 UNWIND
함수를 모두 사용하면 visits
배열 이 풀린 다음 결과 문서 가 평면화됩니다.