문서 메뉴

문서 홈MongoDB 실행 및 관리MongoDB Atlas

Atlas SQL 문을 사용한 쿼리

이 페이지의 내용

  • 쿼리 예시
  • SELECT 문
  • LIMIT 문
  • WHERE 문
  • 평면화 및 해제
  • FLATTEN
  • 평면화 예제
  • Unwind
  • Unwind 예시
  • FLATTEN 및 UNwind 결합 예시

이 페이지에서는 Atlas SQL 쿼리의 예시를 제공합니다. SQL 구문을 사용하여 collection을 쿼리하는 기본 예제와 FLATTENUNWIND 를 사용하여 중첩 데이터로 작업하는 고급 예제를 찾을 수 있습니다.

고급 구성 샘플 연합 데이터베이스 인스턴스에 대해 다음 Atlas SQL 쿼리를 실행하거나 자체 데이터를 읽도록 수정하세요.

참고

SELECT * FROM sessions;

Atlas SQL이 Sessions 컬렉션의 모든 문서를 반환합니다.

SELECT * FROM users LIMIT 2;

Atlas SQL이 Users 컬렉션에서 두 개의 문서를 반환합니다.

SELECT * FROM users WHERE name = 'Jon Snow';

Atlas SQL은 사용자의 nameJon SnowUsers 컬렉션에서 문서를 반환합니다.

이 섹션에서는 문서 구조와 더 쉽게 상호 작용할 수 있는 두 가지 Atlas SQL 기능에 대해 설명합니다. 이는 Atlas SQL에만 있는 기능입니다.

FLATTEN 반구조화된 데이터(JSON의 이름-값 쌍)를 별도의 열로 평면화합니다. 필드 이름은 해당 필드의 모든 값을 행에 포함하는 열 이름이 됩니다.

중첩된 문서를 평면화하는 구문은 FROM 절에서 데이터 소스 및 옵션과 함께 사용할 수 있는 FLATTEN 함수입니다.

SELECT *
FROM FLATTEN(<data source>
WITH DEPTH => <integer>,
SEPARATOR => <string>
)
변수
필요성
설명
<data source>
필수 사항
평면화할 데이터 소스입니다.
DEPTH
옵션
병합할 하위 문서 수준 수를 나타내는 양의 정수입니다. 기본값은 모든 수준의 하위 문서를 병합하는 것입니다.
SEPARATOR
옵션
필드 이름을 연결할 때 구분 기호로 사용할 문자열입니다. 기본값은 _ 입니다.

예제 시나리오에서 customerInfo 컬렉션에는 다음과 같이 구조화된 문서가 포함되어 있습니다.

{
id: 1,
location: "New York",
customer: {
age: 50,
email: "customer@email.com",
satisfaction: 5
}
}

SELECT * FROM customerInfo 쿼리를 실행하면 Atlas SQL은 다음과 같은 최상위 필드가 있는 문서를 반환합니다.

id
1
location
"뉴욕"
customer
{ 연령: 50, 이메일: "customer@email.com", 만족도: 5 }

SELECT * FROM FLATTEN(customerInfo) 쿼리를 실행하면 Atlas SQL은 다음과 같은 최상위 필드가 있는 문서를 반환합니다.

id
1
location
"뉴욕"
customer_age
50
customer_email
"customer@email.com"
customer_satisfaction
5

FLATTEN 을(를) 사용하면 원본 문서의 병합된 각 필드가 결과 세트의 최상위 필드가 됩니다. 중첩된 필드는 상위 필드 이름과 연결되고 기본 구분 기호인 _ 로 구분됩니다.

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 입니다.

예제 시나리오에서 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
"뉴욕"
customer
{ 연령: 50, 이메일: "customer@email.com", 만족도: 5 }
visits
[ { 연도: 2020, 점수: 10 }, { 연도: 2021, 점수: 8 }, { 연도: 2022, 점수: 7 } ]

SELECT * FROM UNWIND(customerInfo WITH PATH => visits, INDEX => idx) 쿼리를 실행하면 Atlas SQL은 다음과 같은 최상위 필드가 있는 문서를 반환합니다.

id
1
1
1
location
"뉴욕"
"뉴욕"
"뉴욕"
customer
{ 연령: 50, 이메일: "customer@email.com", 만족도: 5 }
{ 연령: 50, 이메일: "customer@email.com", 만족도: 5 }
{ 연령: 50, 이메일: "customer@email.com", 만족도: 5 }
idx
0
1
2
visits
{ 연도: 2020, 점수: 10 }
{ 연도: 2021, 점수: 8 }
{ 연도: 2022, 점수: 7 }

UNWINDPATH => visits 와 함께 사용하면 각 visits 객체가 테이블 행이 됩니다.

다음 예에서는 FLATTENUNWIND 함수를 결합합니다.

예제 시나리오에서 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
"뉴욕"
satisfaction
5
customer
{ 연령: 50, 이메일: "customer@email.com", 만족도: 5 }
visits
[ { 연도: 2020, 점수: 10 }, { 연도: 2021, 점수: 8 }, { 연도: 2022, 점수: 7 } ]

Select * from FLATTEN(UNWIND(customerInfo WITH PATH => visits, INDEX => idx)) 쿼리를 실행하면 Atlas SQL은 다음과 같은 최상위 필드가 있는 문서를 반환합니다.

id
1
1
1
location
"뉴욕"
"뉴욕"
"뉴욕"
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 배열이 풀린 다음 결과 문서가 평면화됩니다.

← Power BI에서 Atlas SQL에 연결Connect to Atlas SQL from Power BI