Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

$out

이 페이지의 내용

  • 필요한 권한
  • 구문
  • 필드
  • 옵션
  • 예시
  • 제한 사항
  • 오류 출력

$out은 집계 파이프라인에서 반환된 문서를 가져와서 지정된 컬렉션에 씁니다. $out 연산자는 집계 파이프라인의 마지막 단계여야 합니다. Atlas Data Federation에서는 연합 쿼리를 사용하여 지원되는 여러 연합 데이터베이스 인스턴스 저장소 또는 단일 지원되는 연합 데이터베이스 인스턴스 저장소 중 하나에서 데이터를 쓸 때 $out을 사용할 수 있습니다. 이 기능은 연합 쿼리를 사용하여 다양한 대상으로 데이터를 저장할 수 있도록 지원합니다.

  • Atlas 클러스터 네임스페이스

  • AWS 읽기 및 쓰기 권한이 있는 S3 버킷

  • 읽기 및 쓰기 권한이 있는 Azure Blob Storage 컨테이너

$out 을 사용하려면 연합 데이터베이스 인스턴스에 연결 해야 합니다.

다음이 있어야 합니다.

다음이 있어야 합니다.

  • Azure 역할이 있는 Azure Blob Storage에 대해 구성된 연합 데이터베이스 인스턴스 읽기 및 쓰기 권한이 있습니다.

  • atlasAdmin 역할 또는 outToAzure 권한이 있는 사용자 정의 역할을 가진 MongoDB 사용자.

다음이 있어야 합니다.

  • GCP서비스 계정 에 액세스 수 있는 Google Cloud Storage 버킷에 대해 구성된 연합 데이터베이스 인스턴스 입니다.

  • atlasAdmin 역할 또는 outToGCP 권한이 있는 사용자 정의 역할을 가진 MongoDB 사용자.

참고

$out 을 사용하여 동일한 Atlas cluster의 다른 데이터베이스에 있는 컬렉션에 쓰려면 Atlas cluster가 MongoDB 버전 5.0 이상이어야 합니다.

다음 역할 중 하나를 가진 데이터베이스 사용자여야 합니다.

1{
2 "$out": {
3 "s3": {
4 "bucket": "<bucket-name>",
5 "region": "<aws-region>",
6 "filename": "<file-name>",
7 "format": {
8 "name": "<file-format>",
9 "maxFileSize": "<file-size>",
10 "maxRowGroupSize": "<row-group-size>",
11 "columnCompression": "<compression-type>"
12 },
13 "errorMode": "stop"|"continue"
14 }
15 }
16}
1{
2 "$out": {
3 "azure": {
4 "serviceURL": "<storage-account-url>",
5 "containerName": "<container-name>",
6 "region": "<azure-region>",
7 "filename": "<file-name>",
8 "format": {
9 "name": "<file-format>",
10 "maxFileSize": "<file-size>",
11 "maxRowGroupSize": "<row-group-size>",
12 "columnCompression": "<compression-type>"
13 },
14 "errorMode": "stop"|"continue"
15 }
16 }
17}
1{
2 "$out": {
3 "gcs": {
4 "bucket": "<bucket-name>",
5 "region": "<aws-region>",
6 "filename": "<file-name>",
7 "format": {
8 "name": "<file-format>",
9 "maxFileSize": "<file-size>",
10 "maxRowGroupSize": "<row-group-size>",
11 "columnCompression": "<compression-type>"
12 },
13 "errorMode": "stop"|"continue"
14 }
15 }
16}
1{
2 "$out": {
3 "atlas": {
4 "projectId": "<atlas-project-ID>",
5 "clusterName": "<atlas-cluster-name>",
6 "db": "<atlas-database-name>",
7 "coll": "<atlas-collection-name>"
8 }
9 }
10}
필드
유형
설명
필요성
s3
객체
집계 파이프라인에서 문서를 작성할 위치입니다.
필수 사항
s3.bucket
문자열

집계 파이프라인에서 문서를 작성할 S3 버킷의 이름입니다.

S3에 생성된 호출은 s3.buckets3.filename 사이에 /을 삽입합니다. s3.bucket 문자열에 /을 추가하지 마세요.

예를 들어 s3.bucketmyBucket으로 설정하고 s3.filenamemyPath/myData로 설정하면, Atlas Data Federation은 출력 위치를 다음과 같이 기록합니다.

s3://myBucket/myPath/myData.[n].json
필수 사항
s3.region
문자열
버킷이 호스팅되는 AWS 리전의 이름입니다. 생략한 경우 연합 데이터베이스 인스턴스 구성을 사용하여 지정된 s3.bucket이 호스팅되는 리전을 결정합니다.
옵션
s3.filename
문자열

집계 파이프라인에서 문서를 쓸 파일의 이름입니다. 파일 이름은 상수일 수도 있고, $out 단계에 도달한 문서의 필드에서 동적으로 생성될 수도 있습니다. 제공하는 모든 파일 이름 표현식은 string 데이터 유형으로 평가되어야 합니다.

중요: S3에 새로 생성된 파일과 이름 및 경로가 같은 파일이 있는 경우 $out은 기존 파일을 새로 생성된 파일로 덮어씁니다.

S3에 생성된 호출은 s3.buckets3.filename 사이에 /을 삽입합니다. s3.filename 문자열에 앞에 /을 붙이지 마세요.

예를 들어 s3.filenamemyPath/myData으로 설정하고 s3.bucketmyBucket로 설정하면, Atlas Data Federation은 출력 위치를 다음과 같이 기록합니다.

s3://myBucket/myPath/myData.[n].json
필수 사항
s3.format
객체
S3 파일의 세부 정보.
필수 사항
s3
.format
.name
열거형

S3 파일의 형식입니다. 값은 다음 중 하나일 수 있습니다.

  • bson

  • bson.gz

  • csv

  • csv.gz

  • json 1

  • json.gz 1

  • parquet

  • tsv

  • tsv.gz

1 이 형식의 경우 $outMongoDB 확장 JSON 형식으로 데이터를 씁니다.

자세한 내용은 제한 사항을 참조하세요.

필수 사항
s3
.format
.maxFileSize
바이트

S3 파일의 최대 크기입니다. 현재 파일의 파일 크기 제한에 도달하면 S3에 새 파일이 생성됩니다. 첫 번째 파일은 파일명 확장자 앞에 1을(를) 추가합니다. 이후의 각 파일에 대해 Atlas Data Federation은 추가되는 숫자를 1씩 증가시킵니다.

예를 들어 <filename>.1.<fileformat><filename>.2.<fileformat>입니다.

문서가 maxFileSize보다 큰 경우 Atlas Data Federation은 문서를 자체 파일에 씁니다. 지원되는 접미사는 다음과 같습니다:

기본 10: 1000의 배수 단위로 배율 조정
  • B

  • KB

  • MB

  • GB

  • TB

  • PB

기본 2: 1024의 배수 단위로 배율 조정
  • KiB

  • MiB

  • GiB

  • TiB

  • PiB

생략하는 경우 기본값은 200MiB입니다.

옵션
s3
.format
.maxRowGroupSize
문자열

Parquet 파일 형식만 지원됩니다.

Parquet 파일에 쓸 때 사용할 최대 행 그룹 크기입니다. 생략하면 기본값은 128 MiB 또는 s3.format.maxFileSize 값 중 더 작은 값입니다. 허용되는 최대 값은 1 GB입니다.

옵션
s3
.format
.columnCompression
문자열

Parquet 파일 형식만 지원됩니다.

Parquet 파일을 포맷할 때 Parquet 파일 내의 데이터를 압축하기 위해 적용할 압축 유형입니다. 유효한 값은 다음과 같습니다.

  • gzip

  • snappy

  • uncompressed

생략하는 경우 기본값은 snappy입니다.

자세한 내용은 지원되는 데이터 형식을 참조하세요.

옵션
errorMode
열거형

문서를 처리할 때 오류가 발생할 경우 Atlas Data Federation을 진행하는 방법을 지정합니다. 예를 들어 Atlas Data Federation 이 CSV 파일에 쓸 때 Atlas Data Federation이 문서에서 배열을 발견하면 Atlas Data Federation이 이 값을 사용하여 문서를 건너뛰고 다른 문서를 처리할지 여부를 결정합니다. 유효한 값은 다음과 같습니다.

  • continue 특정 문서를 건너뛰고 나머지 문서를 계속해서 처리합니다. Atlas Data Federation은 오류를 일으킨 문서를 오류 파일에 기록합니다.

    자세한 내용은 오류를 참조하세요.

  • stop 특정 지점에서 멈추고 나머지 문서를 처리하지 않습니다.

생략하는 경우 기본값은 continue입니다.

옵션
필드
유형
설명
필요성
azure
객체
집계 파이프라인에서 문서를 작성할 위치입니다.
필수 사항
azure.serviceURL
문자열
집계 파이프라인에서 문서를 작성할 Azure Storage 계정의 URL입니다.
필수 사항
azure.containerName
문자열
집계 파이프라인에서 문서를 작성할 Azure Blob Storage 컨테이너의 이름.
필수 사항
azure.region
문자열
Blob 스토리지 컨테이너를 호스팅하는 Azure 리전의 이름입니다.
필수 사항
azure.filename
문자열

집계 파이프라인에서 문서를 쓸 파일의 이름입니다.

$out 단계에 도달하는 문서의 필드에서 동적으로 생성된 상수 값 또는 string으로 평가되는 값을 허용합니다. 새로 생성된 파일과 이름 및 경로가 같은 파일이 Azure Blob Storage에 있는 경우 $out은 기존 파일을 새로 생성된 파일로 덮어씁니다.

필수 사항
azure.format
객체
Azure Blob Storage에 있는 파일의 세부 정보.
필수 사항
azure
.format
.name
열거형

Azure Blob Storage의 파일 형식입니다. 값은 다음 중 하나일 수 있습니다.

  • bson

  • bson.gz

  • csv

  • csv.gz

  • json 1

  • json.gz 1

  • parquet

  • tsv

  • tsv.gz

1 이 형식의 경우 $outMongoDB 확장 JSON 형식으로 데이터를 씁니다.

자세한 내용은 제한 사항을 참조하세요.

필수 사항
azure
.format
.maxFileSize
바이트

Azure Blob 스토리지에 있는 파일의 최대 크기입니다.

현재 파일의 크기 제한에 도달하면 $out은 자동으로 새 파일을 생성합니다. 첫 번째 파일은 이름 뒤에 1을 추가합니다. 이후 생성되는 각 파일에 대해 Atlas Data Federation은 추가된 숫자를 하나씩 증가시킵니다.

예를 들어 <filename>.1.<fileformat><filename>.2.<fileformat>입니다.

문서가 maxFileSize보다 큰 경우 Atlas Data Federation은 문서를 자체 파일에 씁니다. 지원되는 접미사는 다음과 같습니다:

기본 10: 1000의 배수 단위로 배율 조정
  • B

  • KB

  • MB

  • GB

  • TB

  • PB

기본 2: 1024의 배수 단위로 배율 조정
  • KiB

  • MiB

  • GiB

  • TiB

  • PiB

생략하는 경우 기본값은 200MiB입니다.

옵션
azure
.format
.maxRowGroupSize
문자열

Parquet 파일 형식만 지원됩니다.

Parquet 파일에 쓸 때 사용할 최대 행 그룹 크기입니다. 생략하면 기본값은 128 MiB 또는 azure.format.maxFileSize 값 중 더 작은 값입니다. 허용되는 최대 값은 1 GB입니다.

옵션
azure
.format
.columnCompression
문자열

Parquet 파일 형식만 지원됩니다.

Parquet 파일을 포맷할 때 Parquet 파일 내의 데이터를 압축하기 위해 적용할 압축 유형입니다. 유효한 값은 다음과 같습니다.

  • gzip

  • snappy

  • uncompressed

생략하는 경우 기본값은 snappy입니다.

자세한 내용은 지원되는 데이터 형식을 참조하세요.

옵션
errorMode
열거형

문서를 처리하는 동안 오류가 발생했을 때 Atlas Data Federation이 어떻게 진행해야 하는지 지정합니다. 유효한 값은 다음과 같습니다.

  • continue 특정 문서를 건너뛰고 나머지 문서를 계속해서 처리합니다. Atlas Data Federation은 오류를 오류 파일에 기록합니다.

  • stop 은 나머지 문서를 처리하지 않고 중지합니다. Atlas Data Federation은 오류를 오류 파일에 기록합니다.

생략하는 경우 기본값은 continue입니다.

자세한 내용은 오류를 참조하세요.

옵션
필드
유형
설명
필요성
gcs
객체
집계 파이프라인에서 문서를 작성할 위치입니다.
필수 사항
gcs.bucket
문자열

집계 파이프라인 에서 문서를 쓰기 (write) Google Cloud Storage 버킷의 이름입니다.

중요

생성된 Google Cloud 호출은 gcs.bucketgcs.filename 사이에 / 을(를) 삽입합니다. gcs.bucket 문자열에 / 을(를) 추가하지 마세요.

예를 들어 gcs.bucketmyBucket으로 설정하고 gcs.filenamemyPath/myData로 설정하면, Atlas Data Federation은 출력 위치를 다음과 같이 기록합니다.

gcs://myBucket/myPath/myData.[n].json
필수 사항
gcs.region
문자열
버킷이 호스팅되는 AWS 리전의 이름입니다. 생략한 경우 연합 데이터베이스 인스턴스 구성을 사용하여 지정된 gcs.bucket이 호스팅되는 리전을 결정합니다.
옵션
gcs.filename
문자열

집계 파이프라인 에서 문서를 쓰기 (write) 파일 의 이름입니다. 파일 이름은 상수이거나 $out 단계에 도달하는 문서의 필드에서 동적으로 생성 될 수 있습니다. 제공하는 모든 파일 이름 표현식 은 string 데이터 유형 으로 평가되어야 합니다. 새로 생성된 파일과 이름 및 경로가 같은 파일이 Google Cloud Storage에 있는 경우$out 은 기존 파일을 새로 생성된 파일로 덮어씁니다.

중요

생성된 Google Cloud Storage 호출은 gcs.bucketgcs.filename 사이에 / 을 삽입합니다. gcs.filename 문자열에 앞에 / 을(를) 붙이지 마세요.

예를 들어 gcs.filenamemyPath/myData으로 설정하고 gcs.bucketmyBucket로 설정하면, Atlas Data Federation은 출력 위치를 다음과 같이 기록합니다.

gcs://myBucket/myPath/myData.[n].json
필수 사항
gcs.format
객체
Google Cloud Storage에 있는 파일 의 세부 정보입니다.
필수 사항
gcs
.format
.name
열거형

Google Cloud Storage에 있는 파일 의 형식입니다. 값은 다음 중 하나일 수 있습니다.

  • bson

  • bson.gz

  • csv

  • csv.gz

  • json 1

  • json.gz 1

  • parquet

  • tsv

  • tsv.gz

1 이 형식의 경우 $outMongoDB 확장 JSON 형식으로 데이터를 씁니다.

자세한 내용은 제한 사항을 참조하세요.

필수 사항
필드
유형
설명
필요성
atlas
객체
집계 파이프라인에서 문서를 작성할 위치입니다.
필수 사항
clusterName
문자열
Atlas 클러스터의 이름.
필수 사항
coll
문자열
Atlas 클러스터에 있는 컬렉션의 이름입니다.
필수 사항
db
문자열
컬렉션이 포함된 Atlas 클러스터의 데이터베이스 이름입니다.
필수 사항
projectId
문자열
Atlas 클러스터가 포함된 프로젝트의 고유 식별자입니다. 프로젝트 ID는 연합 데이터베이스 인스턴스가 포함된 프로젝트의 ID여야 합니다. 생략하면 연합 데이터베이스 인스턴스가 포함된 프로젝트의 ID가 기본값이 됩니다.
옵션
옵션
유형
설명
필요성
background
부울

백그라운드에서 집계 작업을 실행하도록 플래그를 지정합니다. 생략하면 기본값은 false입니다. true 로 설정하면 Atlas Data Federation은 백그라운드에서 쿼리를 실행합니다.

{ "background" : true }

쿼리가 백그라운드에서 계속 실행되는 동안 현재 실행 중인 쿼리가 완료되거나 연합 데이터베이스 인스턴스 연결이 끊길 때까지 기다리지 않고 다른 새 쿼리를 제출하려는 경우 이 옵션을 사용하십시오.

옵션

파일 이름 만들기

다음 예는 $out 단계에 도달한 문서의 동일하거나 다른 데이터 유형의 필드 또는 상수 문자열에서 파일명을 동적으로 생성하는 $out 구문을 보여줍니다.

예시

S3 버킷 my-s3-bucket에 압축된 BSON 파일로 1 GiB의 데이터를 작성하려고 합니다.

다음 $out 구문을 사용합니다:

1{
2 "$out": {
3 "s3": {
4 "bucket": "my-s3-bucket",
5 "filename": "big_box_store/",
6 "format": {
7 "name": "bson.gz"
8 }
9 }
10 }
11}

s3.region이 생략되었으므로 Atlas Data Federation은 스토리지 구성에서 이름이 my-s3-bucket인 버킷이 호스팅되는 리전을 결정합니다. $out은 압축된 BSON 파일 5개를 작성합니다.

  1. $outbig_box_store/1.bson.gz 라는 이름을 지정하는 파일에 대한 데이터의 처음 200 MiB입니다.

    • s3.filename의 값은 각 파일 이름에서 상수 역할을 합니다. 이 값은 문서 필드 또는 값에 종속되지 않습니다.

    • s3.filename은(는) 구분 기호로 끝나므로 Atlas Data Federation은 상수 뒤에 카운터를 추가합니다.

    • 구분 기호로 끝나지 않았다면 Atlas Data Federation은 상수와 카운터 사이에 big_box_store.1.bson.gz처럼 .을(를) 추가했을 것입니다.

    • s3.format.maxFileSize를 사용하여 최대 파일 크기를 변경하지 않았으므로 Atlas Data Federation은 기본값인 200MiB를 사용합니다.

  2. 두 번째 200 MiB의 데이터를 $outbig_box_store/2.bson.gz 라는 이름의 새 파일에 추가합니다.

  3. $outbig_box_store/3.bson.gz 부터 big_box_store/5.bson.gz 까지 이름을 지정하는 파일이 세 개 더 있습니다.

예시

S3 버킷 my-s3-bucket에 압축된 JSON 파일로 90 GiB의 데이터를 작성하려고 합니다.

다음 $out 구문을 사용합니다:

1{
2 "$out": {
3 "s3": {
4 "bucket": "my-s3-bucket",
5 "region": "us-east-1",
6 "filename": {"$toString": "$saleDate"},
7 "format": {
8 "name": "json",
9 "maxFileSize": "100MiB"
10 }
11 }
12 }
13}

$out은 90MB의 데이터를 버킷의 루트에 있는 JSON 파일에 씁니다. 각 JSON 파일에는 동일한 saleDate 값을 가진 모든 문서가 포함되어 있습니다. $out은 문서의 saleDate 값을 문자열로 변환하여 각 파일에 이름을 지정합니다.

예시

S3 버킷 my-s3-bucket에 압축된 BSON 파일로 176 GiB의 데이터를 작성하려고 합니다.

다음 $out 구문을 사용합니다:

1{
2 "$out": {
3 "s3": {
4 "bucket": "my-s3-bucket",
5 "region": "us-east-1",
6 "filename": {
7 "$concat": [
8 "persons/",
9 "$name", "/",
10 "$uniqueId", "/"
11 ]
12 },
13 "format": {
14 "name": "bson",
15 "maxFileSize": "200MiB"
16 }
17 }
18 }
19}

$out은 176MiB의 데이터를 BSON 파일에 씁니다. 각 파일의 이름을 지정하기 위해 $out은 다음을 결합합니다.

  • 상수 문자열 persons/ 및 문서에서:

    • name 필드의 문자열 값,

    • 빗금(/),

    • uniqueId 필드의 문자열 값 및

    • 빗금(/).

BSON 파일에는 동일한 nameuniqueId 값을 가진 모든 문서가 포함되어 있습니다. $out은 문서의 nameuniqueId 값을 사용하여 각 파일의 이름을 지정합니다.

예시

S3 버킷 my-s3-bucket에 압축된 JSON 파일로 154 MiB의 데이터를 작성하려고 합니다.

다음 $out 구문을 가정해 보겠습니다.

1{
2 "$out": {
3 "s3": {
4 "bucket": "my-s3-bucket",
5 "region": "us-east-1",
6 "filename": {
7 "$concat": [
8 "big-box-store/",
9 {
10 "$toString": "$storeNumber"
11 }, "/",
12 {
13 "$toString": "$saleDate"
14 }, "/",
15 "$partId", "/"
16 ]
17 },
18 "format": {
19 "name": "json.gz",
20 "maxFileSize": "200MiB"
21 }
22 }
23 }
24}

$out은 154 MiB의 데이터를 압축된 JSON 파일로 작성하며, 각 파일에는 동일한 storeNumber, saleDate, partId 값을 가진 모든 문서가 포함됩니다. 각 파일의 이름을 지정하기 위해$out 은 다음을 결합합니다.

  • 상수 문자열 값 big-box-store/,

  • storeNumber 필드에 있는 고유한 스토어 번호의 문자열 값,

  • 빗금(/),

  • saleDate 필드에 있는 날짜의 문자열 값,

  • 빗금(/),

  • partId 필드에 있는 부품 ID의 문자열 값,

  • 빗금(/).

파일 이름 만들기

다음 예는 $out 단계에 도달한 문서의 동일하거나 다른 데이터 유형의 필드 또는 상수 문자열에서 파일명을 동적으로 생성하는 $out 구문을 보여줍니다.

예시

Azure Storage 계정 mystorageaccount 및 컨테이너 my-container에 압축된 BSON 파일로 1 GiB의 데이터를 작성하려고 합니다.

다음 $out 구문을 사용합니다:

1{
2 "$out": {
3 "azure": {
4 "serviceURL": "http://mystorageaccount.blob.core.windows.net/",
5 "container": "my-container",
6 "filename": "big_box_store/",
7 "format": {
8 "name": "bson.gz"
9 }
10 }
11 }
12}

azure.region는 생략되므로 Atlas Data Federation은 스토리지 구성에서 my-container라는 컨테이너가 호스팅되는 리전을 결정합니다. $out은 압축된 BSON 파일 5개를 작성합니다.

  1. $outbig_box_store/1.bson.gz 라는 이름을 지정하는 파일에 대한 데이터의 처음 200 MiB입니다.

    • azure.filename의 값은 각 파일 이름에서 상수 역할을 합니다. 이 값은 문서 필드 또는 값에 종속되지 않습니다.

    • azure.filename은(는) 구분 기호로 끝나므로 Atlas Data Federation은 상수 뒤에 카운터를 추가합니다.

    • 구분 기호로 끝나지 않았다면 Atlas Data Federation은 상수와 카운터 사이에 big_box_store.1.bson.gz처럼 .을(를) 추가했을 것입니다.

    • azure.format.maxFileSize를 사용하여 최대 파일 크기를 변경하지 않았으므로 Atlas Data Federation은 기본값인 200MiB를 사용합니다.

  2. 두 번째 200 MiB의 데이터를 $outbig_box_store/2.bson.gz 라는 이름의 새 파일에 추가합니다.

  3. $outbig_box_store/3.bson.gz 부터 big_box_store/5.bson.gz 까지 이름을 지정하는 파일이 세 개 더 있습니다.

예시

90MiB의 데이터를 my-container라는 Azure Blob 스토리지 컨테이너의 JSON 파일에 쓰려고 합니다.

다음 $out 구문을 사용합니다:

1{
2 "$out": {
3 "azure": {
4 "serviceURL": "http://mystorageaccount.blob.core.windows.net/",
5 "container": "my-container",
6 "region": "eastus2",
7 "filename": {"$toString": "$saleDate"},
8 "format": {
9 "name": "json",
10 "maxFileSize": "100MiB"
11 }
12 }
13 }
14}

$out은 90 MiB의 데이터를 컨테이너의 루트에 JSON 파일로 작성합니다. 각 JSON 파일에는 동일한 saleDate 값을 가진 모든 문서가 포함되어 있습니다. $out은 문서의 saleDate 값을 문자열로 변환하여 각 파일에 이름을 지정합니다.

예시

Azure Blob Storage 컨테이너 my-containerBSON 파일로 176 MiB의 데이터를 작성하려고 합니다.

다음 $out 구문을 사용합니다:

1{
2 "$out": {
3 "azure": {
4 "serviceURL": "http://mystorageaccount.blob.core.windows.net/",
5 "container": "my-container",
6 "region": "eastus2",
7 "filename": {
8 "$concat": [
9 "persons/",
10 "$name", "/",
11 "$uniqueId", "/"
12 ]
13 },
14 "format": {
15 "name": "bson",
16 "maxFileSize": "200MiB"
17 }
18 }
19 }
20}

$out은 176MiB의 데이터를 BSON 파일에 씁니다. 각 파일의 이름을 지정하기 위해 $out은 다음을 결합합니다.

  • 상수 문자열 persons/ 및 문서에서:

    • name 필드의 문자열 값,

    • 빗금(/),

    • uniqueId 필드의 문자열 값 및

    • 빗금(/).

BSON 파일에는 동일한 nameuniqueId 값을 가진 모든 문서가 포함되어 있습니다. $out은 문서의 nameuniqueId 값을 사용하여 각 파일의 이름을 지정합니다.

예시

Azure Blob Storage 컨테이너 my-container에 압축된 JSON 파일로 154 MiB의 데이터를 작성하려고 합니다.

다음 $out 구문을 가정해 보겠습니다.

1{
2 "$out": {
3 "azure": {
4 "serviceURL": "http://mystorageaccount.blob.core.windows.net/",
5 "container": "my-container",
6 "region": "eastus2",
7 "filename": {
8 "$concat": [
9 "big-box-store/",
10 {
11 "$toString": "$storeNumber"
12 }, "/",
13 {
14 "$toString": "$saleDate"
15 }, "/",
16 "$partId", "/"
17 ]
18 },
19 "format": {
20 "name": "json.gz",
21 "maxFileSize": "200MiB"
22 }
23 }
24 }
25}

$out은 154 MiB의 데이터를 압축된 JSON 파일로 작성하며, 각 파일에는 동일한 storeNumber, saleDate, partId 값을 가진 모든 문서가 포함됩니다. 각 파일의 이름을 지정하기 위해$out 은 다음을 결합합니다.

  • 상수 문자열 값 big-box-store/,

  • storeNumber 필드에 있는 고유한 스토어 번호의 문자열 값,

  • 빗금(/),

  • saleDate 필드에 있는 날짜의 문자열 값,

  • 빗금(/),

  • partId 필드에 있는 부품 ID의 문자열 값,

  • 빗금(/).

파일 이름 만들기

다음 예는 $out 단계에 도달한 문서의 동일하거나 다른 데이터 유형의 필드 또는 상수 문자열에서 파일명을 동적으로 생성하는 $out 구문을 보여줍니다.

예시

my-gcs-bucket 이라는 Google Cloud Storage 버킷에 1 GiB의 데이터를 압축 BSON 파일로 쓰기 (write) 합니다.

다음 $out 구문을 사용합니다:

1{
2 "$out": {
3 "gcs": {
4 "bucket": "my-gcs-bucket",
5 "filename": "big_box_store/",
6 "format": {
7 "name": "bson.gz"
8 }
9 }
10 }
11}

gcs.region이 생략되었으므로 Atlas Data Federation은 스토리지 구성에서 이름이 my-gcs-bucket인 버킷이 호스팅되는 리전을 결정합니다. $out은 압축된 BSON 파일 5개를 작성합니다.

  1. $outbig_box_store/1.bson.gz 라는 이름을 지정하는 파일에 대한 데이터의 처음 200 MiB입니다.

    • gcs.filename의 값은 각 파일 이름에서 상수 역할을 합니다. 이 값은 문서 필드 또는 값에 종속되지 않습니다.

    • gcs.filename은(는) 구분 기호로 끝나므로 Atlas Data Federation은 상수 뒤에 카운터를 추가합니다.

    • 구분 기호로 끝나지 않았다면 Atlas Data Federation은 상수와 카운터 사이에 big_box_store.1.bson.gz처럼 .을(를) 추가했을 것입니다.

    • gcs.format.maxFileSize를 사용하여 최대 파일 크기를 변경하지 않았으므로 Atlas Data Federation은 기본값인 200MiB를 사용합니다.

  2. 두 번째 200 MiB의 데이터를 $outbig_box_store/2.bson.gz 라는 이름의 새 파일에 추가합니다.

  3. $outbig_box_store/3.bson.gz 부터 big_box_store/5.bson.gz 까지 이름을 지정하는 파일이 세 개 더 있습니다.

예시

JSON 파일에 90 MiB의 데이터를 my-gcs-bucket 이라는 Google Cloud Storage 버킷에 쓰기 (write) 합니다.

다음 $out 구문을 사용합니다:

1{
2 "$out": {
3 "gcs": {
4 "bucket": "my-gcs-bucket",
5 "region": "us-central1",
6 "filename": {"$toString": "$saleDate"},
7 "format": {
8 "name": "json",
9 "maxFileSize": "100MiB"
10 }
11 }
12 }
13}

$out은 90MB의 데이터를 버킷의 루트에 있는 JSON 파일에 씁니다. 각 JSON 파일에는 동일한 saleDate 값을 가진 모든 문서가 포함되어 있습니다. $out은 문서의 saleDate 값을 문자열로 변환하여 각 파일에 이름을 지정합니다.

예시

이름이 my-gcs-bucket 인 Google Cloud Storage 버킷에 176 MiB의 데이터를 BSON 파일로 쓰기 (write) 합니다.

다음 $out 구문을 사용합니다:

1{
2 "$out": {
3 "gcs": {
4 "bucket": "my-gcs-bucket",
5 "region": "us-central1",
6 "filename": {
7 "$concat": [
8 "persons/",
9 "$name", "/",
10 "$uniqueId", "/"
11 ]
12 },
13 "format": {
14 "name": "bson",
15 "maxFileSize": "200MiB"
16 }
17 }
18 }
19}

$out은 176MiB의 데이터를 BSON 파일에 씁니다. 각 파일의 이름을 지정하기 위해 $out은 다음을 결합합니다.

  • 상수 문자열 persons/ 및 문서에서:

    • name 필드의 문자열 값,

    • 빗금(/),

    • uniqueId 필드의 문자열 값 및

    • 빗금(/).

BSON 파일에는 동일한 nameuniqueId 값을 가진 모든 문서가 포함되어 있습니다. $out은 문서의 nameuniqueId 값을 사용하여 각 파일의 이름을 지정합니다.

예시

이름이 my-gcs-bucket 인 Google Cloud Storage 버킷에 154 MiB의 데이터를 압축된 JSON 파일로 쓰기 (write) 합니다.

다음 $out 구문을 가정해 보겠습니다.

1{
2 "$out": {
3 "gcs": {
4 "bucket": "my-gcs-bucket",
5 "region": "us-central1",
6 "filename": {
7 "$concat": [
8 "big-box-store/",
9 {
10 "$toString": "$storeNumber"
11 }, "/",
12 {
13 "$toString": "$saleDate"
14 }, "/",
15 "$partId", "/"
16 ]
17 },
18 "format": {
19 "name": "json.gz",
20 "maxFileSize": "200MiB"
21 }
22 }
23 }
24}

$out은 154 MiB의 데이터를 압축된 JSON 파일로 작성하며, 각 파일에는 동일한 storeNumber, saleDate, partId 값을 가진 모든 문서가 포함됩니다. 각 파일의 이름을 지정하기 위해$out 은 다음을 결합합니다.

  • 상수 문자열 값 big-box-store/,

  • storeNumber 필드에 있는 고유한 스토어 번호의 문자열 값,

  • 빗금(/),

  • saleDate 필드에 있는 날짜의 문자열 값,

  • 빗금(/),

  • partId 필드에 있는 부품 ID의 문자열 값,

  • 빗금(/).

$out 구문은 집계된 데이터를 myTestCluster라는 Atlas 클러스터의 sampleDB.mySampleData 컬렉션으로 보냅니다. 이 구문에서는 프로젝트 ID를 지정하지 않습니다. $out은 연합 데이터베이스 인스턴스가 포함된 프로젝트의 ID를 사용합니다.

예시

1{
2 "$out": {
3 "atlas": {
4 "clusterName": "myTestCluster",
5 "db": "sampleDB",
6 "coll": "mySampleData"
7 }
8 }
9}

다음 예제는 백그라운드에서 $out 단계로 끝나는 집계 파이프라인을 실행하기 위한 $out 구문을 보여줍니다.

예시

db.mySampleData.aggregate(
[
{
"$out": {
"s3": {
"bucket": "my-s3-bucket",
"filename": { "$toString": "$saleDate" }
"format": {
"name": "json"
}
}
}
}
],
{ "background" : true }
)

$out은 백그라운드에서 버킷의 루트에 있는 JSON 파일에 씁니다. 각 JSON 파일에는 동일한 saleDate 값을 가진 모든 문서가 포함되어 있습니다. $out은 문서의 saleDate 값을 문자열로 변환하여 각 파일에 이름을 지정합니다.

예시

db.mySampleData.aggregate(
[
{
"$out": {
"azure": {
"serviceURL": "http://mystorageaccount.blob.core.windows.net/",
"container": "my-container",
"filename": {"$toString": "$saleDate"},
"format": {
"name": "json"
}
}
}
}
],
{ "background" : true }
)

$out은 백그라운드에서 Azure Blob 스토리지 컨테이너의 루트에 있는 JSON 파일에 씁니다. 각 JSON 파일에는 동일한 saleDate 값을 가진 모든 문서가 포함되어 있습니다. $out은 문서의 saleDate 값을 문자열로 변환하여 각 파일에 이름을 지정합니다.

예시

db.mySampleData.aggregate(
[
{
"$out": {
"gcs": {
"bucket": "my-gcs-bucket",
"filename": { "$toString": "$saleDate" }
"format": {
"name": "json"
}
}
}
}
],
{ "background" : true }
)

$out은 백그라운드에서 버킷의 루트에 있는 JSON 파일에 씁니다. 각 JSON 파일에는 동일한 saleDate 값을 가진 모든 문서가 포함되어 있습니다. $out은 문서의 saleDate 값을 문자열로 변환하여 각 파일에 이름을 지정합니다.

예시

db.mySampleData.aggregate(
[
{
"$out": {
"atlas": {
"clusterName": "myTestCluster",
"db": "sampleDB",
"coll": "mySampleData"
}
}
}
],
{ background: true }
)

$out은 백그라운드에서 Atlas 클러스터 myTestCluster에 있는 sampleDB.mySampleData 컬렉션에 작성합니다.

Atlas Data Federation은 파일 이름을 구문 분석할 때 빈 문자열("")을 null 값으로 해석합니다. Atlas Data Federation 에서 구문 분석 가능한 파일 이름을 생성하려면 빈 null 값으로 $convert 를 사용하여 값을 가질 수 있는 필드 string onNull 참조를 래핑합니다.

예시

이 예시에서는 필드 값에서 파일 이름을 만들 때 year 필드에서 null 값을 처리하는 방법을 보여줍니다.

1{
2 "$out": {
3 "s3": {
4 "bucket": "my-s3-bucket",
5 "region": "us-east-1",
6 "filename": {
7 "$concat": [
8 "big-box-store/",
9 {
10 "$convert": {
11 "input": "$year",
12 "to": "string",
13 "onNull": ""
14 }
15 }, "/"
16 ]
17 },
18 "format": {
19 "name": "json.gz",
20 "maxFileSize": "200MiB"
21 }
22 }
23 }
24}

CSV, TSV 또는 Parquet 파일 형식에 쓰는 경우, Atlas Data Federation은 32,000개 이상의 고유 필드를 지원하지 않습니다.

CSV 또는 TSV 형식으로 작성하는 경우, Atlas Data Federation은 문서에서 다음 데이터 유형을 지원하지 않습니다:

  • 배열

  • DB 포인터

  • JavaScript

  • 범위가 있는 자바스크립트 코드

  • 최소 또는 최대 키 데이터 유형

CSV 파일에서 Atlas Data Federation은 점(.) 표기법을 사용하여 중첩된 문서를 나타냅니다. 예를 들어 Atlas Data Federation은 CSV 파일에 { x: { a: 1, b: 2 } }을(를) 다음과 같이 씁니다.

x.a,x.b
1,2

Atlas Data Federation은(는) 모든 다른 데이터 유형을 문자열로 표현합니다. 따라서 CSV 파일에서 다시 읽는 MongoDB의 데이터 유형은 데이터 유형이 작성된 원본 BSON 문서의 데이터 유형과 동일하지 않을 수 있습니다.

Parquet의 경우, Parquet은 null 또는 정의되지 않은 값과 누락된 값을 구분하지 않기 때문에, Atlas Data Federation은 null 또는 정의되지 않은 값이 있는 필드를 누락된 것으로 다시 읽습니다. Atlas Data Federation은 모든 데이터 유형을 지원하지만, JavaScript, 정규식 등과 같이 Parquet에 직접적으로 대응하는 데이터 유형이 없는 BSON 데이터 유형에 대해서는 다음과 같이 대응합니다:

  • MongoDB가 아닌 도구를 사용하여 결과 Parquet 파일을 다시 읽을 수 있는 표현을 선택합니다.

  • Parquet 파일의 키/값 메타데이터에 MongoDB 스키마를 저장하여, Atlas Data Federation이 Parquet 파일을 다시 읽을 때 올바른 데이터 유형으로 원본 BSON 문서를 재구성할 수 있도록 합니다.

예시

다음 BSON 문서를 가정해 보겠습니다.

{
"clientId": 102,
"phoneNumbers": ["123-4567", "234-5678"],
"clientInfo": {
"name": "Taylor",
"occupation": "teacher"
}
}
{
"clientId": "237",
"phoneNumbers" ["345-6789"]
"clientInfo": {
"name": "Jordan"
}
}

앞선 BSON 문서를 $out을 사용하여 S3에 Parquet 형식으로 작성하면 BSON 문서의 Parquet 파일 스키마는 다음과 유사하게 보일 것입니다.

message root {
optional group clientId {
optional int32 int;
optional binary string; (STRING)
}
optional group phoneNumbers (LIST) {
repeated group list {
optional binary element (STRING);
}
}
optional group clientInfo {
optional binary name (STRING);
optional binary occupation (STRING);
}
}

S3의 Parquet 데이터는 다음과 유사합니다.

1clientId:
2.int = 102
3phoneNumbers:
4.list:
5..element = "123-4567"
6.list:
7..element = "234-5678"
8clientInfo:
9.name = "Taylor"
10.occupation = "teacher"
11
12clientId:
13.string = "237"
14phoneNumbers:
15.list:
16..element = "345-6789"
17clientInfo:
18.name = "Jordan"

앞의 예는 Atlas Data Federation이 복잡한 데이터 유형을 처리하는 방법을 보여줍니다:

  • Atlas Data Federation은 모든 수준의 문서를 Parquet 그룹에 매핑합니다.

  • Atlas Data Federation은 LIST 논리적 유형과 필수 3단계 목록 또는 요소 구조를 사용하여 배열을 인코딩합니다. 자세히 알아보려면 목록을 참조하세요.

  • Atlas Data Federation은 Parquet이 폴리모픽 열을 지원하지 않기 때문에 폴리모픽 BSON 필드를 여러 단일 타입의 열 그룹으로 매핑합니다. Atlas Data Federation은 해당 BSON 필드의 이름을 그룹 이름으로 사용합니다. 앞의 예시에서는 Atlas Data Federation이 clientId라는 폴리모픽 필드를 위해 clientId라는 이름의 Parquet 그룹을 생성하며, 두 자식은 BSON 타입인 intstring의 이름을 따릅니다.

Atlas Data Federation은 파일 이름을 구문 분석할 때 빈 문자열("")을 null 값으로 해석합니다. Atlas Data Federation 에서 구문 분석 가능한 파일 이름을 생성하려면 빈 null 값으로 $convert 를 사용하여 값을 가질 수 있는 필드 string onNull 참조를 래핑합니다.

예시

이 예시에서는 필드 값에서 파일 이름을 만들 때 year 필드에서 null 값을 처리하는 방법을 보여줍니다.

1{
2 "$out": {
3 "azure": {
4 "serviceURL": "http://mystorageaccount.blob.core.windows.net/",
5 "container": "my-container",
6 "region": "eastus2",
7 "filename": {
8 "$concat": [
9 "big-box-store/",
10 {
11 "$convert": {
12 "input": "$year",
13 "to": "string",
14 "onNull": ""
15 }
16 }, "/"
17 ]
18 },
19 "format": {
20 "name": "json.gz",
21 "maxFileSize": "200MiB"
22 }
23 }
24 }
25}

CSV, TSV 또는 Parquet 파일 형식에 쓰는 경우, Atlas Data Federation은 32,000개 이상의 고유 필드를 지원하지 않습니다.

CSV 또는 TSV 형식으로 작성하는 경우, Atlas Data Federation은 문서에서 다음 데이터 유형을 지원하지 않습니다:

  • 배열

  • DB 포인터

  • JavaScript

  • 범위가 있는 자바스크립트 코드

  • 최소 또는 최대 키 데이터 유형

CSV 파일에서 Atlas Data Federation은 점(.) 표기법을 사용하여 중첩된 문서를 나타냅니다. 예를 들어 Atlas Data Federation은 CSV 파일에 { x: { a: 1, b: 2 } }을(를) 다음과 같이 씁니다.

x.a,x.b
1,2

Atlas Data Federation은(는) 모든 다른 데이터 유형을 문자열로 표현합니다. 따라서 CSV 파일에서 다시 읽는 MongoDB의 데이터 유형은 데이터 유형이 작성된 원본 BSON 문서의 데이터 유형과 동일하지 않을 수 있습니다.

Parquet의 경우, Parquet은 null 또는 정의되지 않은 값과 누락된 값을 구분하지 않기 때문에, Atlas Data Federation은 null 또는 정의되지 않은 값이 있는 필드를 누락된 것으로 다시 읽습니다. Atlas Data Federation은 모든 데이터 유형을 지원하지만, JavaScript, 정규식 등과 같이 Parquet에 직접적으로 대응하는 데이터 유형이 없는 BSON 데이터 유형에 대해서는 다음과 같이 대응합니다:

  • MongoDB가 아닌 도구를 사용하여 결과 Parquet 파일을 다시 읽을 수 있는 표현을 선택합니다.

  • Parquet 파일의 키/값 메타데이터에 MongoDB 스키마를 저장하여, Atlas Data Federation이 Parquet 파일을 다시 읽을 때 올바른 데이터 유형으로 원본 BSON 문서를 재구성할 수 있도록 합니다.

예시

다음 BSON 문서를 가정해 보겠습니다.

{
"clientId": 102,
"phoneNumbers": ["123-4567", "234-5678"],
"clientInfo": {
"name": "Taylor",
"occupation": "teacher"
}
}
{
"clientId": "237",
"phoneNumbers" ["345-6789"]
"clientInfo": {
"name": "Jordan"
}
}

앞선 BSON 문서를 $out을 사용하여 Azure에 Parquet 형식으로 작성하면 BSON 문서의 Parquet 파일 스키마는 다음과 유사하게 보일 것입니다.

message root {
optional group clientId {
optional int32 int;
optional binary string (STRING);
}
optional group phoneNumbers (LIST) {
repeated group list {
optional binary element (STRING);
}
}
optional group clientInfo {
optional binary name (STRING);
optional binary occupation (STRING);
}
}

Azure Blob 스토리지의 Parquet 데이터는 다음과 유사합니다.

1clientId:
2.int = 102
3phoneNumbers:
4.list:
5..element = "123-4567"
6.list:
7..element = "234-5678"
8clientInfo:
9.name = "Taylor"
10.occupation = "teacher"
11
12clientId:
13.string = "237"
14phoneNumbers:
15.list:
16..element = "345-6789"
17clientInfo:
18.name = "Jordan"

앞의 예는 Atlas Data Federation이 복잡한 데이터 유형을 처리하는 방법을 보여줍니다:

  • Atlas Data Federation은 모든 수준의 문서를 Parquet 그룹에 매핑합니다.

  • Atlas Data Federation은 LIST 논리적 유형과 필수 3단계 목록 또는 요소 구조를 사용하여 배열을 인코딩합니다. 자세히 알아보려면 목록을 참조하세요.

  • Atlas Data Federation은 Parquet이 폴리모픽 열을 지원하지 않기 때문에 폴리모픽 BSON 필드를 여러 단일 타입의 열 그룹으로 매핑합니다. Atlas Data Federation은 해당 BSON 필드의 이름을 그룹 이름으로 사용합니다. 앞의 예시에서는 Atlas Data Federation이 clientId라는 폴리모픽 필드를 위해 clientId라는 이름의 Parquet 그룹을 생성하며, 두 자식은 BSON 타입인 intstring의 이름을 따릅니다.

Atlas Data Federation은 파일 이름을 구문 분석할 때 빈 문자열("")을 null 값으로 해석합니다. Atlas Data Federation 에서 구문 분석 가능한 파일 이름을 생성하려면 빈 null 값으로 $convert 를 사용하여 값을 가질 수 있는 필드 string onNull 참조를 래핑합니다.

예시

이 예시에서는 필드 값에서 파일 이름을 만들 때 year 필드에서 null 값을 처리하는 방법을 보여줍니다.

1{
2 "$out": {
3 "gcs": {
4 "bucket": "my-gcs-bucket",
5 "region": "us-central1",
6 "filename": {
7 "$concat": [
8 "big-box-store/",
9 {
10 "$convert": {
11 "input": "$year",
12 "to": "string",
13 "onNull": ""
14 }
15 }, "/"
16 ]
17 },
18 "format": {
19 "name": "json.gz",
20 "maxFileSize": "200MiB"
21 }
22 }
23 }
24}

CSV, TSV 또는 Parquet 파일 형식에 쓰는 경우, Atlas Data Federation은 32,000개 이상의 고유 필드를 지원하지 않습니다.

CSV 또는 TSV 형식으로 작성하는 경우, Atlas Data Federation은 문서에서 다음 데이터 유형을 지원하지 않습니다:

  • 배열

  • DB 포인터

  • JavaScript

  • 범위가 있는 자바스크립트 코드

  • 최소 또는 최대 키 데이터 유형

CSV 파일에서 Atlas Data Federation은 점(.) 표기법을 사용하여 중첩된 문서를 나타냅니다. 예를 들어 Atlas Data Federation은 CSV 파일에 { x: { a: 1, b: 2 } }을(를) 다음과 같이 씁니다.

x.a,x.b
1,2

Atlas Data Federation은(는) 모든 다른 데이터 유형을 문자열로 표현합니다. 따라서 CSV 파일에서 다시 읽는 MongoDB의 데이터 유형은 데이터 유형이 작성된 원본 BSON 문서의 데이터 유형과 동일하지 않을 수 있습니다.

Parquet의 경우, Parquet은 null 또는 정의되지 않은 값과 누락된 값을 구분하지 않기 때문에, Atlas Data Federation은 null 또는 정의되지 않은 값이 있는 필드를 누락된 것으로 다시 읽습니다. Atlas Data Federation은 모든 데이터 유형을 지원하지만, JavaScript, 정규식 등과 같이 Parquet에 직접적으로 대응하는 데이터 유형이 없는 BSON 데이터 유형에 대해서는 다음과 같이 대응합니다:

  • MongoDB가 아닌 도구를 사용하여 결과 Parquet 파일을 다시 읽을 수 있는 표현을 선택합니다.

  • Parquet 파일의 키/값 메타데이터에 MongoDB 스키마를 저장하여, Atlas Data Federation이 Parquet 파일을 다시 읽을 때 올바른 데이터 유형으로 원본 BSON 문서를 재구성할 수 있도록 합니다.

예시

다음 BSON 문서를 가정해 보겠습니다.

{
"clientId": 102,
"phoneNumbers": ["123-4567", "234-5678"],
"clientInfo": {
"name": "Taylor",
"occupation": "teacher"
}
}
{
"clientId": "237",
"phoneNumbers" ["345-6789"]
"clientInfo": {
"name": "Jordan"
}
}

$out to GCP 를 사용하여 앞의 BSON문서를 Parquet 형식으로 쓰기 (write) 하는 경우 BSON 문서의 Parquet 파일 스키마 는 다음과 유사하게 보입니다.

message root {
optional group clientId {
optional int32 int;
optional binary string; (STRING)
}
optional group phoneNumbers (LIST) {
repeated group list {
optional binary element (STRING);
}
}
optional group clientInfo {
optional binary name (STRING);
optional binary occupation (STRING);
}
}

Google Cloud Storage의 Parquet 데이터는 다음과 유사하게 표시됩니다.

1clientId:
2.int = 102
3phoneNumbers:
4.list:
5..element = "123-4567"
6.list:
7..element = "234-5678"
8clientInfo:
9.name = "Taylor"
10.occupation = "teacher"
11
12clientId:
13.string = "237"
14phoneNumbers:
15.list:
16..element = "345-6789"
17clientInfo:
18.name = "Jordan"

앞의 예는 Atlas Data Federation이 복잡한 데이터 유형을 처리하는 방법을 보여줍니다:

  • Atlas Data Federation은 모든 수준의 문서를 Parquet 그룹에 매핑합니다.

  • Atlas Data Federation은 LIST 논리적 유형과 필수 3단계 목록 또는 요소 구조를 사용하여 배열을 인코딩합니다. 자세히 알아보려면 목록을 참조하세요.

  • Atlas Data Federation은 Parquet이 폴리모픽 열을 지원하지 않기 때문에 폴리모픽 BSON 필드를 여러 단일 타입의 열 그룹으로 매핑합니다. Atlas Data Federation은 해당 BSON 필드의 이름을 그룹 이름으로 사용합니다. 앞의 예시에서는 Atlas Data Federation이 clientId라는 폴리모픽 필드를 위해 clientId라는 이름의 Parquet 그룹을 생성하며, 두 자식은 BSON 타입인 intstring의 이름을 따릅니다.

이 섹션은 cloud 서비스 제공자 저장 제품에만 적용됩니다.

Atlas Data Federation은 $out 단계에 들어가고 다음 이유 중 하나로 인해 기록할 수 없는 문서에 대해 아래에 설명된 오류 처리 메커니즘을 사용합니다.

  • s3.filename이(가) 문자열 값으로 평가되지 않습니다.

  • s3.filename은(는) 쓸 수 없는 파일에 대해 평가합니다.

  • s3.format.namecsv, tsv, csv.gz 또는 tsv.gz 로 설정되어 있고 $out 에 전달된 문서에 지정된 파일 형식에서 지원되지 않는 데이터 유형이 포함되어 있습니다. 지원되지 않는 데이터 유형의 전체 목록은 CSV 및 TSV 파일 형식을 참조하세요.

$out 에서 문서를 처리하는 동안 위의 오류 중 하나가 발생하면 Atlas Data Federation은 s3://<bucket-name>/atlas-data-lake-<correlation-id>/ 경로에 있는 다음 세 개의 특수 오류 파일에 기록합니다.

오류 파일 이름
설명
out-error-docs/<i>.json
Atlas Data Federation은 오류가 발생한 문서를 이 파일에 기록합니다. i은(는) 1(으)로 시작하여 기록 중인 파일이 maxFileSize에 도달할 때마다 증가합니다. 이후 모든 추가 문서는 새 파일 out-error-docs/<i+1>.json에 기록됩니다.
out-error-index/<i>.json
Atlas Data Federation이 이 파일에 오류 메시지를 씁니다. 각 오류 메시지에는 오류에 대한 설명과 0으로 시작하고 파일에 오류 메시지가 추가될 때마다 증가하는 인덱스 값 n이 들어 있습니다. i1로 시작하고 기록 중인 파일이 maxFileSize에 도달할 때마다 증가합니다. 그런 다음 추가 오류 메시지가 새 파일 out-error-docs/<i+1>.json에 기록됩니다.
out-error-summary.json
Atlas Data Federation은 집계 작업 중에 발생한 각 오류 유형에 대한 단일 요약 문서를 이 파일에 기록합니다. 각 요약 문서에는 오류 유형에 대한 설명과 해당 유형의 오류가 발생한 문서 수가 포함되어 있습니다.

예시

이 예에서는 연합 데이터베이스 인스턴스에서 $out 를 사용하여 오류 파일을 생성하는 방법을 보여 줍니다.

다음 집계 파이프라인은 analytics.customers 샘플 데이터 세트 컬렉션의 문서에서 고객 생년월일을 내림차순으로 정렬하고 가장 어린 세 고객의 _id, name, accounts 필드를 이름이 customer-dataS3 버킷의 이름이 youngest-customers.csv인 파일에 쓰려고 시도합니다.

db.customers.aggregate([
{ $sort: { "birthdate" : -1 } },
{ $unset: [ "username", "address", "email", "tier_and_details", "birthdate" ] },
{ $limit: 3 },
{ $out: {
"s3": {
"bucket": "customer-data",
"filename": "youngest-customers",
"region":"us-east-2",
"format": {
"name": "csv"
}
}
}
])

accounts 은 배열 필드이므로 $out 에서 s3.format.name csv 에 문서를 쓰려고 할 때 오류가 발생합니다. 이러한 오류를 처리하기 위해 Atlas Data Federation은 다음 세 가지 오류 파일에 기록합니다.

  • 다음 출력은 out-error-docs/1.json 파일에 기록된 3개의 문서 중 첫 번째 문서를 보여줍니다.

    s3://customer-data/atlas-data-lake-1773b3d5e2a7f3858530daf5/out-error-docs/1.json
    {
    "_id" : {"$oid":"5ca4bbcea2dd94ee58162ba7"},
    "name": "Marc Cain",
    "accounts": [{"$numberInt":"980440"}, {"$numberInt":"626807"}, {"$numberInt":"313907"}, {"$numberInt":"218101"}, {"$numberInt":"157495"}, {"$numberInt":"736396"}],
    }
  • 다음 출력은 out-error-index/1.json 파일에 기록된 세 가지 오류 메시지 중 첫 번째를 보여줍니다. n 필드는 0에서 시작하여 파일에 오류가 기록될 때마다 증가합니다.

    s3://customer-data/atlas-data-lake-1773b3d5e2a7f3858530daf5/out-error-index/1.json
    {
    "n" : {"$numberInt": "0"},
    "error" : "field accounts is of unsupported type array"
    }
  • 다음 출력은 out-error-summary 파일에 기록된 오류 요약 문서를 보여줍니다. count 필드는 accounts 배열 필드로 인해 $out 에 전달된 문서 중 오류가 발생한 문서 수를 나타냅니다.

    s3://customer-data/atlas-data-lake-1773b3d5e2a7f3858530daf5/out-error-summary.json
    {
    "errorType": "field accounts is of unsupported type array",
    "count": {"$numberInt":"3"}
    }

Atlas Data Federation은 $out 단계에 들어가고 다음 이유 중 하나로 인해 기록할 수 없는 문서에 대해 아래에 설명된 오류 처리 메커니즘을 사용합니다.

  • azure.filename이(가) 문자열 값으로 평가되지 않습니다.

  • azure.filename은(는) 쓸 수 없는 파일에 대해 평가합니다.

  • azure.format.namecsv, tsv, csv.gz 또는 tsv.gz 로 설정되어 있고 $out 에 전달된 문서에 지정된 파일 형식에서 지원되지 않는 데이터 유형이 포함되어 있습니다. 지원되지 않는 데이터 유형의 전체 목록은 CSV 및 TSV 파일 형식을 참조하세요.

$out 에서 문서를 처리하는 동안 위의 오류 중 하나가 발생하면 Atlas Data Federation은 http://<storage-account>.blob.core.windows.net/<container-name>/atlas-data-lake-<correlation-id>/ 경로에 있는 다음 세 개의 특수 오류 파일에 기록합니다.

오류 파일 이름
설명
out-error-docs/<i>.json

Atlas Data Federation은 오류가 발생한 문서를 이 파일에 기록합니다.

i 1로 시작하여 기록 중인 파일이 maxFileSize에 도달할 때마다 증가합니다. 이후 모든 추가 문서는 새 파일 out-error-docs/<i+1>.json에 기록됩니다.

out-error-index/<i>.json

Atlas Data Federation이 이 파일에 오류 메시지를 씁니다. 각 오류 메시지에는 오류에 대한 설명과 0(으)로 시작하고 파일에 오류 메시지가 추가될 때마다 증가하는 인덱스 값 n(이)가 들어 있습니다.

i1로 시작하고 파일이 maxFileSize에 도달할 때마다 증가합니다. 그런 다음 추가 오류 메시지가 새 파일 out-error-docs/<i+1>.json에 기록됩니다.

out-error-summary.json
Atlas Data Federation은 집계 작업 중에 발생한 각 오류 유형에 대한 단일 요약 문서를 이 파일에 기록합니다. 각 요약 문서에는 오류 유형에 대한 설명과 해당 유형의 오류가 발생한 문서 수가 포함되어 있습니다.

예시

이 예에서는 연합 데이터베이스 인스턴스에서 $out 를 사용하여 오류 파일을 생성하는 방법을 보여 줍니다.

다음 집계 파이프라인은 analytics.customers 샘플 데이터 세트 컬렉션의 문서를 고객 생년월일 내림차순으로 정렬하고 가장 어린 고객 3명의 _id, name, accounts 필드를 이름이 customer-dataAzure Blob 스토리지 컨테이너의 이름이 youngest-customers.csv인 파일에 쓰려고 시도합니다.

db.customers.aggregate([
{ $sort: { "birthdate" : -1 } },
{ $unset: [ "username", "address", "email", "tier_and_details", "birthdate" ] },
{ $limit: 3 },
{ $out: {
"azure": {
"serviceURL": "https://myserviceaccount.blob.core.windows.net"
"container": "customer-data",
"filename": "youngest-customers",
"region":"eastus2",
"format": {
"name": "csv"
}
}
}
])

accounts 은 배열 필드이므로 $out 에서 azure.format.name csv 에 문서를 쓰려고 할 때 오류가 발생합니다. 이러한 오류를 처리하기 위해 Atlas Data Federation은 다음 세 가지 오류 파일에 기록합니다.

  • 다음 출력은 out-error-docs/1.json 파일에 기록된 3개의 문서 중 첫 번째 문서를 보여줍니다.

    http://mystorageaccount.blob.core.windows.net/customer-data/atlas-data-lake-1773b3d5e2a7f3858530daf5/out-error-docs/1.json
    {
    "_id" : {"$oid":"5ca4bbcea2dd94ee58162ba7"},
    "name": "Marc Cain",
    "accounts": [{"$numberInt":"980440"}, {"$numberInt":"626807"}, {"$numberInt":"313907"}, {"$numberInt":"218101"}, {"$numberInt":"157495"}, {"$numberInt":"736396"}],
    }
  • 다음 출력은 out-error-index/1.json 파일에 기록된 세 가지 오류 메시지 중 첫 번째를 보여줍니다. n 필드는 0에서 시작하여 파일에 오류가 기록될 때마다 증가합니다.

    http://mystorageaccount.blob.core.windows.net/customer-data/atlas-data-lake-1773b3d5e2a7f3858530daf5/out-error-index/1.json
    {
    "n" : {"$numberInt": "0"},
    "error" : "field accounts is of unsupported type array"
    }
  • 다음 출력은 out-error-summary 파일에 기록된 오류 요약 문서를 보여줍니다. count 필드는 accounts 배열 필드로 인해 $out 에 전달된 문서 중 오류가 발생한 문서 수를 나타냅니다.

    http://mystorageaccount.blob.core.windows.net/customer-data/atlas-data-lake-1773b3d5e2a7f3858530daf5/out-error-summary.json
    {
    "errorType": "field accounts is of unsupported type array",
    "count": {"$numberInt":"3"}
    }

Atlas Data Federation은 $out 단계에 들어가고 다음 이유 중 하나로 인해 기록할 수 없는 문서에 대해 아래에 설명된 오류 처리 메커니즘을 사용합니다.

  • gcs.filename이(가) 문자열 값으로 평가되지 않습니다.

  • gcs.filename은(는) 쓸 수 없는 파일에 대해 평가합니다.

  • gcs.format.namecsv, tsv, csv.gz 또는 tsv.gz 로 설정되어 있고 $out 에 전달된 문서에 지정된 파일 형식에서 지원되지 않는 데이터 유형이 포함되어 있습니다. 지원되지 않는 데이터 유형의 전체 목록은 CSV 및 TSV 파일 형식을 참조하세요.

$out 에서 문서를 처리하는 동안 위의 오류 중 하나가 발생하면 Atlas Data Federation은 gcs://<bucket-name>/atlas-data-lake-<correlation-id>/ 경로에 있는 다음 세 개의 특수 오류 파일에 기록합니다.

오류 파일 이름
설명
out-error-docs/<i>.json
Atlas Data Federation은 오류가 발생한 문서를 이 파일에 기록합니다. i은(는) 1(으)로 시작하여 기록 중인 파일이 maxFileSize에 도달할 때마다 증가합니다. 이후 모든 추가 문서는 새 파일 out-error-docs/<i+1>.json에 기록됩니다.
out-error-index/<i>.json
Atlas Data Federation이 이 파일에 오류 메시지를 씁니다. 각 오류 메시지에는 오류에 대한 설명과 0으로 시작하고 파일에 오류 메시지가 추가될 때마다 증가하는 인덱스 값 n이 들어 있습니다. i1로 시작하고 기록 중인 파일이 maxFileSize에 도달할 때마다 증가합니다. 그런 다음 추가 오류 메시지가 새 파일 out-error-docs/<i+1>.json에 기록됩니다.
out-error-summary.json
Atlas Data Federation은 집계 작업 중에 발생한 각 오류 유형에 대한 단일 요약 문서를 이 파일에 기록합니다. 각 요약 문서에는 오류 유형에 대한 설명과 해당 유형의 오류가 발생한 문서 수가 포함되어 있습니다.

예시

이 예에서는 연합 데이터베이스 인스턴스에서 $out 를 사용하여 오류 파일을 생성하는 방법을 보여 줍니다.

다음 집계 파이프라인 은 analytics.customers 샘플 데이터 세트 컬렉션 의 문서를 고객 생년월일을 내림차순으로 정렬하고 가장 어린 세 고객의 _id, nameaccounts 필드를 Google 파일의 youngest-customers.csv 파일 에 쓰기 (write) 시도합니다. 이름이 customer-data 인 Cloud Storage 버킷입니다.

db.customers.aggregate([
{ $sort: { "birthdate" : -1 } },
{ $unset: [ "username", "address", "email", "tier_and_details", "birthdate" ] },
{ $limit: 3 },
{ $out: {
"gcs": {
"bucket": "customer-data",
"filename": "youngest-customers",
"region":"us-central1",
"format": {
"name": "csv"
}
}
}
])

accounts 은 배열 필드이므로 $out 에서 gcs.format.name csv 에 문서를 쓰려고 할 때 오류가 발생합니다. 이러한 오류를 처리하기 위해 Atlas Data Federation은 다음 세 가지 오류 파일에 기록합니다.

  • 다음 출력은 out-error-docs/1.json 파일에 기록된 3개의 문서 중 첫 번째 문서를 보여줍니다.

    gcs://customer-data/atlas-data-lake-1773b3d5e2a7f3858530daf5/out-error-docs/1.json
    {
    "_id" : {"$oid":"5ca4bbcea2dd94ee58162ba7"},
    "name": "Marc Cain",
    "accounts": [{"$numberInt":"980440"}, {"$numberInt":"626807"}, {"$numberInt":"313907"}, {"$numberInt":"218101"}, {"$numberInt":"157495"}, {"$numberInt":"736396"}],
    }
  • 다음 출력은 out-error-index/1.json 파일에 기록된 세 가지 오류 메시지 중 첫 번째를 보여줍니다. n 필드는 0에서 시작하여 파일에 오류가 기록될 때마다 증가합니다.

    gcs://customer-data/atlas-data-lake-1773b3d5e2a7f3858530daf5/out-error-index/1.json
    {
    "n" : {"$numberInt": "0"},
    "error" : "field accounts is of unsupported type array"
    }
  • 다음 출력은 out-error-summary 파일에 기록된 오류 요약 문서를 보여줍니다. count 필드는 accounts 배열 필드로 인해 $out 에 전달된 문서 중 오류가 발생한 문서 수를 나타냅니다.

    gcs://customer-data/atlas-data-lake-1773b3d5e2a7f3858530daf5/out-error-summary.json
    {
    "errorType": "field accounts is of unsupported type array",
    "count": {"$numberInt":"3"}
    }

이 섹션은 cloud 서비스 제공자 저장 에만 적용됩니다.

다음도 참조하세요.

돌아가기

$merge