Docs Menu
Docs Home
/
MongoDB Atlas
/ / /

$out

項目一覧

  • 必要な権限
  • 構文
  • フィールド
  • オプション
  • 制限
  • エラー出力

$outは集計パイプラインによって返されたドキュメントを受け取り、指定されたコレクションに書き込みます。 $out演算子は、集計パイプラインの 最後のステージ である必要があります。 Atlas Data Federation では、次のいずれかに フェデレーティッドクエリ を使用する場合に、 $out を使用して、 サポートさ れているフェデレーティッドデータベースインスタンス ストアまたは複数の サポートさ れているフェデレーティッドデータベースインスタンス ストアのいずれかからデータを書込むことができます。

  • Atlas クラスター名前空間

  • Amazon Web Services 読み取りおよび書込み権限を持つS3バケット

  • 読み取りおよび書込み権限を持つAzure Blog ストレージ コンテナ

$out を使用するには、フェデレーティッドデータベースインスタンスに 接続 する必要があります。

次のものが必要です。

次のものが必要です。

次のものが必要です。

  • GCP サービスアカウントにアクセスできる Google Cloud Storage バケット用に構成されたフェデレーティッドデータベースインスタンス。

  • atlasAdminロールを持つ MongoDB ユーザー、またはoutToGCP権限を持つカスタムロール。

注意

$outを使用して、同じ Atlas クラスター上の別のデータベース内のコレクションに書き込むには、Atlas クラスターが 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

string

集計パイプラインからドキュメントを書き込むS 3バケットの名前。

S 3への生成された呼び出しは、 s3.buckets3.filenameの間に/を挿入します。 s3.bucket string に/を追加しないでください。

たとえば、 s3.bucketmyBucketに、 s3.filenamemyPath/myDataに設定すると、Atlas Data Federation は出力場所を次のように書込みます。

s3://myBucket/myPath/myData.[n].json

必須

s3.region

string

バケットがホストされているAmazon Web Servicesリージョンの名前。 省略した場合、 はフェデレーティッドデータベースインスタンス構成を使用して、指定されたs3.bucketがホストされているリージョンを決定します。

任意

s3.filename

string

集計パイプラインからドキュメントを書き込むファイルの名前。ファイル名は、定数であることも、$out ステージに達するドキュメント内のフィールドから動的に作成されることもできます。指定したファイル名式はいずれもstring データ型に評価される必要があります。

重要: S3上に新しく生成されたファイルと同じ名前とパスを持つファイルがある場合、$outは既存のファイルを新しく生成されたファイルで上書きします。

S 3への生成された呼び出しは、 s3.buckets3.filenameの間に/を挿入します。 s3.filename string の前に/を付けないでください。

たとえば、 s3.filenamemyPath/myDataに、 s3.bucketmyBucketに設定すると、Atlas Data Federation は出力場所を次のように書込みます。

s3://myBucket/myPath/myData.[n].json

必須

s3.format

オブジェクト

S 3内の ファイルの詳細。

必須

s3
.format
.name

列挙

S 3のファイルの形式。 値は次のいずれかになります。

  • bson

  • bson.gz

  • csv

  • csv.gz

  • json 1

  • json.gz 1

  • parquet

  • tsv

  • tsv.gz

1この形式の場合、 $outMongoDB 拡張 JSON形式でデータを書込みます。

詳細については、「制限」を参照してください。

必須

s3
.format
.maxFileSize

バイト

S 3内のファイルの最大サイズ。 現在のファイルのファイル サイズ制限に達すると、 S 3に新しいファイルが作成されます。 最初のファイルでは、ファイル名拡張子の前に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

string

Perquet ファイル形式のみでサポートされています。

Farquet ファイルへの書き込み時に使用する最大行グループ サイズ。 省略した場合、デフォルトは128 MiBまたはs3.format.maxFileSizeの値のいずれか小さい方になります。 許可される最大値は1 GBです。

任意

s3
.format
.columnCompression

string

Perquet ファイル形式のみでサポートされています。

Perquet ファイルをフォーマットするときに、Parquet ファイル内のデータを圧縮するために適用する圧縮タイプ。 有効な値は以下のとおりです。

  • gzip

  • snappy

  • uncompressed

省略した場合、デフォルトは snappy になります。

詳細については、 「サポートされているデータ形式」 を参照してください。

任意

errorMode

列挙

ドキュメントの処理時にエラーが発生した場合に Atlas Data Federation が続行する方法を指定します。 たとえば、 Atlas Data Federation Atlas Data FederationがCSVファイルに書き込みを行っているときにドキュメント内の配列を検出した場合、 Atlas Data Federationはこの値を使用して、ドキュメントをスキップして他のドキュメントを処理するかどうかを決定します。 有効な値は以下のとおりです。

  • continue ドキュメントをスキップし、残りのドキュメントの処理を続行します。 Atlas Data Federation は、エラーの原因となったドキュメントもエラー ファイルに書込みます。

    詳しくは、「 エラー 」を参照してください。

  • stop その時点で停止し、残りのドキュメントを処理しない場合。

省略した場合、デフォルトは continue になります。

任意

フィールド
タイプ
説明
必要性

azure

オブジェクト

集約パイプラインからドキュメントを書き込むロケーション。

必須

azure.serviceURL

string

集計パイプラインからドキュメントを書き込む Azure ストレージ アカウントの URL 。

必須

azure.containerName

string

集計パイプラインからドキュメントを書き込むAzure Blob ストレージ コンテナの名前。

必須

azure.region

string

Blob ストレージ コンテナをホストするAzureリージョンの名前。

必須

azure.filename

string

集計パイプラインからドキュメントを書き込むファイルの名前。

定数値、またはstring $out ステージに達するドキュメントのフィールドから動的に作成された と評価される値を受け入れます。新しく生成されたファイルと同じ名前とパスを持つファイルがAzure Blog ストレージにある場合、$out は既存のファイルを新しく生成されたファイルで上書きします。

必須

azure.format

オブジェクト

Azure Blog Storage 内の ファイルの詳細。

必須

azure
.format
.name

列挙

Azure Blog Storage でのファイルの形式。 値は次のいずれかになります。

  • bson

  • bson.gz

  • csv

  • csv.gz

  • json 1

  • json.gz 1

  • parquet

  • tsv

  • tsv.gz

1この形式の場合、 $outMongoDB 拡張 JSON形式でデータを書込みます。

詳細については、「制限」を参照してください。

必須

azure
.format
.maxFileSize

バイト

Azure Blog Storage 内のファイルの最大サイズ。

現在のファイルのファイル サイズ制限に達すると、 $outは自動的に新しいファイルを作成します。 最初のファイルは、名前の後に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 になります。

任意

azure
.format
.maxRowGroupSize

string

Perquet ファイル形式のみでサポートされています。

Farquet ファイルへの書き込み時に使用する最大行グループ サイズ。 省略した場合、デフォルトは128 MiBまたはazure.format.maxFileSizeの値のいずれか小さい方になります。 許可される最大値は1 GBです。

任意

azure
.format
.columnCompression

string

Perquet ファイル形式のみでサポートされています。

Perquet ファイルをフォーマットするときに、Parquet ファイル内のデータを圧縮するために適用する圧縮タイプ。 有効な値は以下のとおりです。

  • gzip

  • snappy

  • uncompressed

省略した場合、デフォルトは snappy になります。

詳細については、 「サポートされているデータ形式」 を参照してください。

任意

errorMode

列挙

ドキュメントの処理中にエラーが発生した場合に Atlas Data Federation が続行する方法を指定します。 有効な値は以下のとおりです。

  • continue ドキュメントをスキップし、残りのドキュメントの処理を続行します。 Atlas Data Federation は、エラーをエラーファイルに記録します。

  • stop 残りのドキュメントを処理せずに停止します。 Atlas Data Federation は、エラーをエラーファイルに記録します。

省略した場合、デフォルトは continue になります。

詳細については、「 エラー 」を参照してください。

任意

フィールド
タイプ
説明
必要性

gcs

オブジェクト

集約パイプラインからドキュメントを書き込むロケーション。

必須

gcs.bucket

string

集計パイプラインからドキュメントを書き込む 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

string

バケットがホストされているAmazon Web Servicesリージョンの名前。 省略した場合、 はフェデレーティッドデータベースインスタンス構成を使用して、指定されたgcs.bucketがホストされているリージョンを決定します。

任意

gcs.filename

string

集計パイプラインからドキュメントを書き込むファイルの名前。ファイル名は、定数であることも、$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

string

Atlas クラスターの名前。

必須

coll

string

Atlas クラスター上のコレクションの名前。

必須

db

string

コレクションを含む Atlas クラスター上のデータベースの名前。

必須

projectId

string

Atlas クラスターを含むプロジェクトの一意の識別子。 プロジェクト ID は、フェデレーティッドデータベースインスタンスを含むプロジェクトの ID である必要があります。 省略した場合、デフォルトはフェデレーティッドデータベースインスタンスを含むプロジェクトの ID。

任意

オプション
タイプ
説明
必要性

background

ブール値

バックグラウンドで集計操作を実行するためのフラグ。 省略した場合、デフォルトはfalseになります。 trueに設定すると、Atlas Data Federation はバックグラウンドでクエリを実行します。

{ "background" : true }

現在実行中のクエリがフェデレーティッドデータベースインスタンスへの接続を完了または切断するのを待たずに、他の新しいクエリを送信すると同時に、クエリがバックグラウンドで実行され続ける場合は、このオプションを使用します。

任意

ファイル名を作成

次の例は、定数 string から、または $out ステージに到達するドキュメント内の同じまたは異なるデータ型のフィールドからファイル名を動的に作成するための $out 構文を示しています。

1 GiB のデータを圧縮BSONファイルとしてmy-s3-bucketという名前のS 3バケットに書込み (write) したい。

次の$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は、次の 5 つの圧縮BSONファイルを書込みます。

  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 はデフォルト値の 200 MiB を使用します。

  2. $outbig_box_store/2.bson.gzと名前を付ける新しいファイルへの 2 つ目の200 MiB のデータ。

  3. $outbig_box_store/3.bson.gzからbig_box_store/5.bson.gzまでの名前を付けるさらに 3 つのファイル。

90という名前の S3 バケットに JSON ファイルに MiBmy-s3-bucket のデータを書込みたいと考えています。

次の$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は、バケットのルートにあるJSONファイルに90 MiB のデータを書込みます。 各JSONファイルには、同じsaleDate値を持つすべてのドキュメントが含まれています。 $outは、string に変換されたドキュメントのsaleDate値を使用して各ファイルに名前を付けます。

176 MiB のデータをBSONファイルとしてmy-s3-bucketという名前のS 3バケットに書き込みます。

次の$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は176 MiB のデータをBSONファイルに書込みます。 各ファイルに名前を付けるには、 $outは次の要素を連結します。

  • 次のドキュメントからの 定数string persons/

    • nameフィールドの string 値、

    • フォワードスラッシュ( / )、

    • uniqueIdフィールドの string 値、および

    • フォワードスラッシュ( / )。

BSONファイルには、 nameuniqueIdの値が同じすべてのドキュメントが含まれています。 $outは、ドキュメントのname値とuniqueId値を使用して各ファイルに名前を付けます。

154 MiB のデータを圧縮JSONファイルとしてmy-s3-bucketという名前のS 3バケットに書き込みます。

次の$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は圧縮されたJSONファイルに154 MiB のデータを書込みます。各ファイルには、同じstoreNumbersaleDatepartId値を持つすべてのドキュメントが含まれています。 各ファイルに名前を付けるには、 $outは次の要素を連結します。

  • big-box-store/ の定数string値、

  • storeNumberフィールドの一意の店舗番号の string 値、

  • フォワードスラッシュ( / )、

  • saleDateフィールドからの日付の string 値、

  • フォワードスラッシュ( / )、

  • partIdフィールドからの 部分 ID の string 値、および

  • フォワードスラッシュ( / )。

ファイル名を作成

次の例は、定数 string から、または $out ステージに到達するドキュメント内の同じまたは異なるデータ型のフィールドからファイル名を動的に作成するための $out 構文を示しています。

圧縮BSONファイルとして1 GiB のデータをAzureストレージ アカウントmystorageaccountmy-containerという名前のコンテナに書き込みます。

次の$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は、次の 5 つの圧縮BSONファイルを書込みます。

  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 はデフォルト値の 200 MiB を使用します。

  2. $outbig_box_store/2.bson.gzと名前を付ける新しいファイルへの 2 つ目の200 MiB のデータ。

  3. $outbig_box_store/3.bson.gzからbig_box_store/5.bson.gzまでの名前を付けるさらに 3 つのファイル。

という名前の Azure Blob 90Storage コンテナの JSON ファイルに MiBmy-container のデータを書込みたいと考えています。

次の$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は、コンテナのルートにあるJSONファイルに90 MiB のデータを書込みます。 各JSONファイルには、同じsaleDate値を持つすべてのドキュメントが含まれています。 $outは、string に変換されたドキュメントのsaleDate値を使用して各ファイルに名前を付けます。

という名前の Azure Blob Storage コンテナに BSON ファイルとして MiB のデータを書込み (write)176my-container ます。

次の$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は176 MiB のデータをBSONファイルに書込みます。 各ファイルに名前を付けるには、 $outは次の要素を連結します。

  • 次のドキュメントからの 定数string persons/

    • nameフィールドの string 値、

    • フォワードスラッシュ( / )、

    • uniqueIdフィールドの string 値、および

    • フォワードスラッシュ( / )。

BSONファイルには、 nameuniqueIdの値が同じすべてのドキュメントが含まれています。 $outは、ドキュメントのname値とuniqueId値を使用して各ファイルに名前を付けます。

圧縮されたJSONファイルとして154 MiB のデータをmy-containerという名前のAzure Blob Storage コンテナに書き込みます。

次の$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は圧縮されたJSONファイルに154 MiB のデータを書込みます。各ファイルには、同じstoreNumbersaleDatepartId値を持つすべてのドキュメントが含まれています。 各ファイルに名前を付けるには、 $outは次の要素を連結します。

  • big-box-store/ の定数string値、

  • storeNumberフィールドの一意の店舗番号の string 値、

  • フォワードスラッシュ( / )、

  • saleDateフィールドからの日付の string 値、

  • フォワードスラッシュ( / )、

  • partIdフィールドからの 部分 ID の string 値、および

  • フォワードスラッシュ( / )。

ファイル名を作成

次の例は、定数 string から、または $out ステージに到達するドキュメント内の同じまたは異なるデータ型のフィールドからファイル名を動的に作成するための $out 構文を示しています。

my-gcs-bucket という名前の Google Cloud Storage バケットに、1 GiB のデータを圧縮 BSON ファイルとして書き込むとします。

次の$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は、次の 5 つの圧縮BSONファイルを書込みます。

  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 はデフォルト値の 200 MiB を使用します。

  2. $outbig_box_store/2.bson.gzと名前を付ける新しいファイルへの 2 つ目の200 MiB のデータ。

  3. $outbig_box_store/3.bson.gzからbig_box_store/5.bson.gzまでの名前を付けるさらに 3 つのファイル。

my-gcs-bucketという名前の Google Cloud Storage バケットに、90 MiB のデータを JSON ファイルに書き込むとします。

次の$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は、バケットのルートにあるJSONファイルに90 MiB のデータを書込みます。 各JSONファイルには、同じsaleDate値を持つすべてのドキュメントが含まれています。 $outは、string に変換されたドキュメントのsaleDate値を使用して各ファイルに名前を付けます。

my-gcs-bucketという名前の Google Cloud Storage バケットに、176 MiBのデータを BSON ファイルとして書き込むとします。

次の$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は176 MiB のデータをBSONファイルに書込みます。 各ファイルに名前を付けるには、 $outは次の要素を連結します。

  • 次のドキュメントからの 定数string persons/

    • nameフィールドの string 値、

    • フォワードスラッシュ( / )、

    • uniqueIdフィールドの string 値、および

    • フォワードスラッシュ( / )。

BSONファイルには、 nameuniqueIdの値が同じすべてのドキュメントが含まれています。 $outは、ドキュメントのname値とuniqueId値を使用して各ファイルに名前を付けます。

my-gcs-bucket という名前の Google Cloud Storageバケットに、154 MiB のデータを圧縮 JSON ファイルとして書き込むとします。

次の$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は圧縮されたJSONファイルに154 MiB のデータを書込みます。各ファイルには、同じstoreNumbersaleDatepartId値を持つすべてのドキュメントが含まれています。 各ファイルに名前を付けるには、 $outは次の要素を連結します。

  • big-box-store/ の定数string値、

  • storeNumberフィールドの一意の店舗番号の string 値、

  • フォワードスラッシュ( / )、

  • saleDateフィールドからの日付の string 値、

  • フォワードスラッシュ( / )、

  • partIdフィールドからの 部分 ID の string 値、および

  • フォワードスラッシュ( / )。

この$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.runCommand({
"aggregate": "my-collection",
"pipeline": [
{
"$out": {
"s3": {
"bucket": "my-s3-bucket",
"filename": { "$toString": "$saleDate" }
"format": {
"name": "json"
}
}
}
}
],
{ "background" : true }
})

$outは、バックグラウンドのバケットのルートにあるJSONファイルに書込みます。 各JSONファイルには、同じsaleDate値を持つすべてのドキュメントが含まれています。 $outは、string に変換されたドキュメントのsaleDate値を使用して各ファイルに名前を付けます。

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

$out は、バックグラウンドの Azure Blog ストレージ コンテナのルートにある JSON ファイルに書込みます。JSONファイルには、同じsaleDate値を持つすべてのドキュメントが含まれています。 $outは、string に変換されたドキュメントのsaleDate値を使用して各ファイルに名前を付けます。

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

$outは、バックグラウンドのバケットのルートにあるJSONファイルに書込みます。 各JSONファイルには、同じsaleDate値を持つすべてのドキュメントが含まれています。 $outは、string に変換されたドキュメントのsaleDate値を使用して各ファイルに名前を付けます。

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

$outは、バックグラウンドでmyTestClusterという名前の Atlas クラスター内のsampleDB.mySampleDataコレクションにバックグラウンドで書き込みを行います。

Atlas Data Federation は、ファイル名を解析するときに空の文字列( "" )をnull値として解釈します。 Atlas Data Federationで解析可能なファイル名を生成する場合は、 $convertを使用して null 値を持つ可能性のあるフィールド参照を空の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}

CSVTSV 、またはPerquetファイル形式に書き込む場合、Atlas Data Federation は 32000 を超える一意のフィールドをサポートしません。

CSV または TSV 形式に書き込む場合、Atlas Data Federation はドキュメント内の次のデータ型をサポートしません。

  • 配列

  • DBポインタ

  • JavaScript

  • JavaScript コード(スコープ付き)

  • 最小または最大のキー データ型

CSV ファイルでは、Atlas Data Federation はドット( . )表記を使用してネストされたドキュメントを表します。 たとえば、Atlas Data Federation は CSV ファイルに{ x: { a: 1, b: 2 } }を次のように書込みます。

x.a,x.b
1,2

Atlas Data Federation は、他のすべてのデータ型を string として表現します。 そのため、CSV ファイルから読み取られた MongoDB のデータ型は、データ型が書き込まれた元のBSONドキュメントのデータ型と異なる場合があります。

Perquet の場合、Atlas Data Federation は null または未定義の値が欠落しているフィールドを読み取ります。これは、Parquet が null または未定義の値と欠落値を区別しないためです。 Atlas Data Federation はすべてのデータ型をサポートしていますが、JavaScript、正規表現など、Parquet に直接同等ではないBSONデータ型の場合は、次のようになります。

  • 非 MongoDB ツールを使用して結果の一部のファイルを読み取れる表現を選択します。

  • MongoDB スキーマを Perquet ファイルのキーと値のメタデータに保存し、Parquet ファイルが Atlas Data Federation によって読み取られた場合に、Atlas Data Federation が正しいデータ型で元のBSONドキュメントを再構築できるようにします。

次のBSONドキュメントを検討します。

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

$out を S3 に使用して前述の BSON ドキュメントを Perquet 形式に書き込むと、 BSON ドキュメントの Perquet ファイル スキーマは次のようになります。

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);
}
}

S 3の一部のデータは次のようになります。

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 は、すべてのレベルのドキュメントを Compass グループにマッピングします。

  • Atlas Data Federation は、 LIST論理型と必須の 3 レベルのリストまたは要素構造を使用して配列をエンコードします。 詳細については、「 リスト 」を参照してください。

  • Atlas Data Federation は、多形BSONフィールドを複数の単一型列のグループにマッピングします。Parquet は多形列をサポートしていないためです。 Atlas Data Federation は、 BSONフィールドの後にグループに名前を付けます。 前の例では、Atlas Data Federation は、 clientIdという名前の多形フィールドに対してclientIdという名前の Perl グループを作成し、そのBSONタイプにちなんで命名された 2 つの子( intstring )を持ちます。

Atlas Data Federation は、ファイル名を解析するときに空の文字列( "" )をnull値として解釈します。 Atlas Data Federationで解析可能なファイル名を生成する場合は、 $convertを使用して null 値を持つ可能性のあるフィールド参照を空の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}

CSVTSV 、またはPerquetファイル形式に書き込む場合、Atlas Data Federation は 32000 を超える一意のフィールドをサポートしません。

CSV または TSV 形式に書き込む場合、Atlas Data Federation はドキュメント内の次のデータ型をサポートしません。

  • 配列

  • DBポインタ

  • JavaScript

  • JavaScript コード(スコープ付き)

  • 最小または最大のキー データ型

CSV ファイルでは、Atlas Data Federation はドット( . )表記を使用してネストされたドキュメントを表します。 たとえば、Atlas Data Federation は CSV ファイルに{ x: { a: 1, b: 2 } }を次のように書込みます。

x.a,x.b
1,2

Atlas Data Federation は、他のすべてのデータ型を string として表現します。 そのため、CSV ファイルから読み取られた MongoDB のデータ型は、データ型が書き込まれた元のBSONドキュメントのデータ型と異なる場合があります。

Perquet の場合、Atlas Data Federation は null または未定義の値が欠落しているフィールドを読み取ります。これは、Parquet が null または未定義の値と欠落値を区別しないためです。 Atlas Data Federation はすべてのデータ型をサポートしていますが、JavaScript、正規表現など、Parquet に直接同等ではないBSONデータ型の場合は、次のようになります。

  • 非 MongoDB ツールを使用して結果の一部のファイルを読み取れる表現を選択します。

  • MongoDB スキーマを Perquet ファイルのキーと値のメタデータに保存し、Parquet ファイルが Atlas Data Federation によって読み取られた場合に、Atlas Data Federation が正しいデータ型で元のBSONドキュメントを再構築できるようにします。

次のBSONドキュメントを検討します。

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

Azure への $out を 使用して前述の BSON ドキュメントを Perquet 形式で書き込むと、 BSON ドキュメントの Perquet ファイル スキーマは次のようになります。

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 Blog ストレージの一部のデータは次のようになります。

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 は、すべてのレベルのドキュメントを Compass グループにマッピングします。

  • Atlas Data Federation は、 LIST論理型と必須の 3 レベルのリストまたは要素構造を使用して配列をエンコードします。 詳細については、「 リスト 」を参照してください。

  • Atlas Data Federation は、多形BSONフィールドを複数の単一型列のグループにマッピングします。Parquet は多形列をサポートしていないためです。 Atlas Data Federation は、 BSONフィールドの後にグループに名前を付けます。 前の例では、Atlas Data Federation は、 clientIdという名前の多形フィールドに対してclientIdという名前の Perl グループを作成し、そのBSONタイプにちなんで命名された 2 つの子( intstring )を持ちます。

Atlas Data Federation は、ファイル名を解析するときに空の文字列( "" )をnull値として解釈します。 Atlas Data Federationで解析可能なファイル名を生成する場合は、 $convertを使用して null 値を持つ可能性のあるフィールド参照を空の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}

CSVTSV 、またはPerquetファイル形式に書き込む場合、Atlas Data Federation は 32000 を超える一意のフィールドをサポートしません。

CSV または TSV 形式に書き込む場合、Atlas Data Federation はドキュメント内の次のデータ型をサポートしません。

  • 配列

  • DBポインタ

  • JavaScript

  • JavaScript コード(スコープ付き)

  • 最小または最大のキー データ型

CSV ファイルでは、Atlas Data Federation はドット( . )表記を使用してネストされたドキュメントを表します。 たとえば、Atlas Data Federation は CSV ファイルに{ x: { a: 1, b: 2 } }を次のように書込みます。

x.a,x.b
1,2

Atlas Data Federation は、他のすべてのデータ型を string として表現します。 そのため、CSV ファイルから読み取られた MongoDB のデータ型は、データ型が書き込まれた元のBSONドキュメントのデータ型と異なる場合があります。

Perquet の場合、Atlas Data Federation は null または未定義の値が欠落しているフィールドを読み取ります。これは、Parquet が null または未定義の値と欠落値を区別しないためです。 Atlas Data Federation はすべてのデータ型をサポートしていますが、JavaScript、正規表現など、Parquet に直接同等ではないBSONデータ型の場合は、次のようになります。

  • 非 MongoDB ツールを使用して結果の一部のファイルを読み取れる表現を選択します。

  • MongoDB スキーマを Perquet ファイルのキーと値のメタデータに保存し、Parquet ファイルが Atlas Data Federation によって読み取られた場合に、Atlas Data Federation が正しいデータ型で元のBSONドキュメントを再構築できるようにします。

次のBSONドキュメントを検討します。

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

上記の BSON ドキュメントを $out を使用して Parquet 形式で GCP に書き込むと、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 は、すべてのレベルのドキュメントを Compass グループにマッピングします。

  • Atlas Data Federation は、 LIST論理型と必須の 3 レベルのリストまたは要素構造を使用して配列をエンコードします。 詳細については、「 リスト 」を参照してください。

  • Atlas Data Federation は、多形BSONフィールドを複数の単一型列のグループにマッピングします。Parquet は多形列をサポートしていないためです。 Atlas Data Federation は、 BSONフィールドの後にグループに名前を付けます。 前の例では、Atlas Data Federation は、 clientIdという名前の多形フィールドに対してclientIdという名前の Perl グループを作成し、そのBSONタイプにちなんで命名された 2 つの子( intstring )を持ちます。

このセクションは、クラウド サービス プロバイダーのストレージ機能にのみ適用されます。

Atlas Data Federation は、 $outステージに入り、次のいずれかの理由で書き込みができないドキュメントに対して、以下で説明するエラー処理メカニズムを使用します。

  • s3.filenameは string 値として評価されません。

  • s3.filenameは書き込み不可のファイルと評価します。

  • s3.format.namecsvtsvcsv.gz 、またはtsv.gzに設定されており、 $outに渡されるドキュメントには、指定されたファイル形式ではサポートされていないデータ型が含まれています。 サポートされていないデータ型の完全なリストについては、「 CSV および TSV ファイル形式 」を参照してください。

ドキュメントの処理中に$outで上記のエラーのいずれかが発生した場合、Atlas Data Federation はパスs3://<bucket-name>/atlas-data-lake-<correlation-id>/にある次の 3 つの特別なエラー ファイルに書込みます。

エラーファイル名
説明

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 は、集計操作中に発生したエラーの種類ごとに 1 つのサマリー ドキュメントをこのファイルに書込みます。 各サマリードキュメントには、エラーのタイプの説明と、そのタイプのエラーが発生したドキュメントの数が含まれています。

この例では、フェデレーティッドデータベースインスタンスで$outを使用してエラーファイルを生成する方法を示します。

次の集計パイプラインは、 サンプルanalytics.customers データセット コレクション内のドキュメントをカスタマー日付の降順でソートし、最下位_id nameaccounts3 人のカスタマーの 、 、youngest-customers.csv フィールドを S の3customer-data という名前のファイルに書込みます。 という名前の バケット。

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は配列フィールドであるため、 $outs3.format.name csvにドキュメントを書込み (write) しようとするとエラーに遭遇します。 これらのエラーを処理するために、Atlas Data Federation は次の 3 つのエラーファイルに書込みます。

  • 次の出力は、 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ファイルに書き込まれた 3 つのエラー メッセージのうちの最初の を示しています。 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は string 値として評価されません。

  • azure.filenameは書き込み不可のファイルと評価します。

  • azure.format.namecsvtsvcsv.gz 、またはtsv.gzに設定されており、 $outに渡されるドキュメントには、指定されたファイル形式ではサポートされていないデータ型が含まれています。 サポートされていないデータ型の完全なリストについては、「 CSV および TSV ファイル形式 」を参照してください。

ドキュメントの処理中に$outで上記のエラーのいずれかが発生した場合、Atlas Data Federation はパスhttp://<storage-account>.blob.core.windows.net/<container-name>/atlas-data-lake-<correlation-id>/にある次の 3 つの特別なエラー ファイルに書込みます。

エラーファイル名
説明

out-error-docs/<i>.json

Atlas Data Federation は、エラーが発生したドキュメントをこのファイルに書込みます。

i1から始まり、書き込み先のファイルがmaxFileSizeに達するたびに増加します。 Then, any further documents are written to the new file 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 は、集計操作中に発生したエラーの種類ごとに 1 つのサマリー ドキュメントをこのファイルに書込みます。 各サマリードキュメントには、エラーのタイプの説明と、そのタイプのエラーが発生したドキュメントの数が含まれています。

この例では、フェデレーティッドデータベースインスタンスで$outを使用してエラーファイルを生成する方法を示します。

次の集計パイプラインは、 analytics.customersサンプル データセット コレクション内のドキュメントをカスタマー日付の降順でソートし、最下位 3 人のカスタマーの_idnameaccountsフィールドをAzureyoungest-customers.csvという名前のファイルに書込みます。 customer-dataという名前の Blob ストレージ コンテナ。

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は配列フィールドであるため、 $outazure.format.name csvにドキュメントを書込み (write) しようとするとエラーに遭遇します。 これらのエラーを処理するために、Atlas Data Federation は次の 3 つのエラーファイルに書込みます。

  • 次の出力は、 out-error-docs/1.jsonファイルに書き込まれた 3 つのドキュメントのうちの最初の を示しています。

    http://mystorageaccount.lob.core.windows.net/customer-data/atlas-data-lake-1773b 3 d 5 e3 2 a 7 f 3858530 daf 5 /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ファイルに書き込まれた 3 つのエラー メッセージのうちの最初の を示しています。 nフィールドは 0 から始まり、ファイルに書き込まれるエラーごとに増加します。

    http://mystorageaccount.lob.core.windows.net/customer-data/atlas-data-lake-1773b 3 d 5 e3 2 a 7 f 3858530 daf 5 /out-error-index/ 1 .json
    {
    "n" : {"$numberInt": "0"},
    "error" : "field accounts is of unsupported type array"
    }
  • 次の出力は、 out-error-summaryファイルに書き込まれたエラーの概要ドキュメントを示しています。 countフィールドは、 accounts配列フィールドが原因でエラーが発生した$outに渡されたドキュメントの数を表します。

    http://mystorageaccount.lob.core.windows.net/customer-data/atlas-data-lake-1773b 3 d 5 e3 2 a 7 f 3858530 daf 5 /out-error- Summary.json
    {
    "errorType": "field accounts is of unsupported type array",
    "count": {"$numberInt":"3"}
    }

Atlas Data Federation は、 $outステージに入り、次のいずれかの理由で書き込みができないドキュメントに対して、以下で説明するエラー処理メカニズムを使用します。

  • gcs.filenameは string 値として評価されません。

  • gcs.filenameは書き込み不可のファイルと評価します。

  • gcs.format.namecsvtsvcsv.gz 、またはtsv.gzに設定されており、 $outに渡されるドキュメントには、指定されたファイル形式ではサポートされていないデータ型が含まれています。 サポートされていないデータ型の完全なリストについては、「 CSV および TSV ファイル形式 」を参照してください。

ドキュメントの処理中に$outで上記のエラーのいずれかが発生した場合、Atlas Data Federation はパスgcs://<bucket-name>/atlas-data-lake-<correlation-id>/にある次の 3 つの特別なエラー ファイルに書込みます。

エラーファイル名
説明

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 は、集計操作中に発生したエラーの種類ごとに 1 つのサマリー ドキュメントをこのファイルに書込みます。 各サマリードキュメントには、エラーのタイプの説明と、そのタイプのエラーが発生したドキュメントの数が含まれています。

この例では、フェデレーティッドデータベースインスタンスで$outを使用してエラーファイルを生成する方法を示します。

次の集計パイプラインは、analytics.customersサンプル データセット コレクション内のドキュメントをカスタマーの誕生日の降順でソートし、最も若い 3 人のカスタマーの _idnameaccounts フィールドを customer-data という名前の Google Cloud Storage バケット内の youngest-customers.csv という名前のファイルに書き込みます。

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は配列フィールドであるため、 $outgcs.format.name csvにドキュメントを書込み (write) しようとするとエラーに遭遇します。 これらのエラーを処理するために、Atlas Data Federation は次の 3 つのエラーファイルに書込みます。

  • 次の出力は、 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ファイルに書き込まれた 3 つのエラー メッセージのうちの最初の を示しています。 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"}
    }

このセクションは、クラウド サービス プロバイダー ストレージにのみ適用されます。

Tip

以下も参照してください。

戻る

$merge