$outは、集計パイプラインによって返されたドキュメントを受け取り、指定されたコレクションに書き込みます。演算子は、 $out集計パイプライン の最後の ステージ である必要があります。Atlas Data Federation では、 を使用して、 フェデレーティッドクエリ を使用している場合、 サポートされている フェデレーティッドデータベースインスタンス保存 (する)のいずれかの$out 1 つまたは複数の サポートされている フェデレーティッドデータベースインスタンス保存 (する)から、次のいずれかの 1 つにデータを書き込む (write)ことができます。
Atlas クラスター名前空間
Amazon Web Services 読み取りおよび書込み権限を持つS3バケット
読み取りおよび書込み権限を持つAzure Blog ストレージ コンテナ
Google Cloud Platform Storage(GCS)
を使用するには、フェデレーティッドデータベースインスタンスに$out 接続 する必要があります。
必要な権限
次のものが必要です。
読み取りおよび書込み (write) 権限、または 3s:PutObject 権限を持つ S3 バケット用に構成されたフェデレーティッドデータベースインスタンス。
atlasAdminロールを持つ MongoDB ユーザー、または
outToS3権限を持つカスタムロール。
次のものが必要です。
読み取りおよび書込み権限を持つAzureロールを持つAzure Blob ストレージ用に構成されたフェデレーティッドデータベースインスタンス。
atlasAdminロールを持つ MongoDB ユーザー、または
outToAzure権限を持つカスタムロール。
次のものが必要です。
GCPサービス アカウントへのアクセス権を持つGoogle Cloud Platformストレージバケット用に構成されたフェデレーティッドデータベースインスタンス。
atlasAdminロールを持つ MongoDB ユーザー、または
outToGCP権限を持つカスタムロール。
注意
$outを使用して、同じ Atlas クラスター上の別のデータベース内のコレクションに書き込むには、Atlas クラスターが MongoDB バージョン7.0以降である必要があります。
次のいずれかのロールを持つデータベースユーザーである必要があります。
構文
{ "$out": { "s3": { "bucket": "<bucket-name>", "region": "<aws-region>", "filename": "<file-name>", "format": { "name": "<file-format>", "maxFileSize": "<file-size>", "maxRowGroupSize": "<row-group-size>", "columnCompression": "<compression-type>" }, "errorMode": "stop"|"continue" } } }
{ "$out": { "azure": { "serviceURL": "<storage-account-url>", "containerName": "<container-name>", "region": "<azure-region>", "filename": "<file-name>", "format": { "name": "<file-format>", "maxFileSize": "<file-size>", "maxRowGroupSize": "<row-group-size>", "columnCompression": "<compression-type>" }, "errorMode": "stop"|"continue" } } }
{ "$out": { "gcs": { "bucket": "<bucket-name>", "region": "<aws-region>", "filename": "<file-name>", "format": { "name": "<file-format>", "maxFileSize": "<file-size>", "maxRowGroupSize": "<row-group-size>", "columnCompression": "<compression-type>" }, "errorMode": "stop"|"continue" } } }
{ "$out": { "atlas": { "projectId": "<atlas-project-ID>", "clusterName": "<atlas-cluster-name>", "db": "<atlas-database-name>", "coll": "<atlas-collection-name>" } } }
フィールド
フィールド | タイプ | 説明 | 必要性 | ||||
|---|---|---|---|---|---|---|---|
| オブジェクト | 集約パイプラインからドキュメントを書き込むロケーション。 | 必須 | ||||
| string | 集計パイプラインからドキュメントを書き込むS3バケットの名前。 S3への生成された呼び出しでは、 たとえば、 | 必須 | ||||
| string | バケットがホストされているAmazon Web Servicesリージョンの名前。 省略した場合、 はフェデレーティッドデータベースインスタンス構成を使用して、指定された | 任意 | ||||
| string |
S3への生成された呼び出しでは、 たとえば、 | 必須 | ||||
| オブジェクト | S3内の ファイルの詳細。 | 必須 | ||||
| 列挙 | S3における ファイルの形式。 値は次のいずれかになります。
1 この形式の場合、 詳細については、「制限 」を参照してください。 | 必須 | ||||
| バイト | S3 内の非圧縮 BSON ファイルの最大サイズ。BSON をお好みの形式に変換する際、生成される出力ファイルは小さくなることもあれば(例: Parquet に変換する場合)、大きくなることもあります(例: CSV に変換する場合)。 ドキュメントが
省略した場合、デフォルトは 現在のファイルのサイズ制限に達すると、Atlas Data Federation は S3 に新しいファイルを作成します。最初のファイルの拡張子の前に たとえば、 | 任意 | ||||
| string | Perquet ファイル形式のみでサポートされています。 Farquet ファイルへの書き込み時に使用する最大行グループ サイズ。 省略した場合、デフォルトは | 任意 | ||||
| string | Perquet ファイル形式のみでサポートされています。 Perquet ファイルをフォーマットするときに、Parquet ファイル内のデータを圧縮するために適用する圧縮タイプ。 有効な値は以下のとおりです。
省略した場合、デフォルトは 詳細については、 「サポートされているデータ形式」 を参照してください。 | 任意 | ||||
| 列挙 | ドキュメントの処理時にエラーが発生した場合に Atlas Data Federation が続行する方法を指定します。 たとえば、 Atlas Data Federation Atlas Data FederationがCSVファイルに書き込みを行っているときにドキュメント内の配列を検出した場合、 Atlas Data Federationはこの値を使用して、ドキュメントをスキップして他のドキュメントを処理するかどうかを決定します。 有効な値は以下のとおりです。
省略した場合、デフォルトは | 任意 |
フィールド | タイプ | 説明 | 必要性 | ||||
|---|---|---|---|---|---|---|---|
| オブジェクト | 集約パイプラインからドキュメントを書き込むロケーション。 | 必須 | ||||
| string | 集計パイプラインからドキュメントを書き込む Azure ストレージ アカウントの URL 。 | 必須 | ||||
| string | 集計パイプラインからドキュメントを書き込むAzure Blob ストレージ コンテナの名前。 | 必須 | ||||
| string | Blob ストレージ コンテナをホストするAzureリージョンの名前。 | 必須 | ||||
| string | 集計パイプラインからドキュメントを書き込むファイルの名前。 定数値、または に評価される値を受け入れます。これらは、 | 必須 | ||||
| オブジェクト | Azure Blog Storage 内の ファイルの詳細。 | 必須 | ||||
| 列挙 | Azure Blog Storage でのファイルの形式。 値は次のいずれかになります。
1 この形式の場合、 詳細については、「制限 」を参照してください。 | 必須 | ||||
| バイト | Azure Blob Storage 内の非圧縮 BSON ドキュメントの最大サイズ。BSON をお好みの形式に変換する際、生成される出力ファイルは小さくなることもあれば(例: Parquet に変換する場合)、大きくなることもあります(例: CSV に変換する場合)。 ドキュメントが
省略した場合、デフォルトは 現在のファイルのサイズ制限に達すると、Atlas Data Federation は S3 に新しいファイルを作成します。最初のファイルの拡張子の前に たとえば、 | 任意 | ||||
| string | Perquet ファイル形式のみでサポートされています。 Farquet ファイルへの書き込み時に使用する最大行グループ サイズ。 省略した場合、デフォルトは | 任意 | ||||
| string | Perquet ファイル形式のみでサポートされています。 Perquet ファイルをフォーマットするときに、Parquet ファイル内のデータを圧縮するために適用する圧縮タイプ。 有効な値は以下のとおりです。
省略した場合、デフォルトは 詳細については、 「サポートされているデータ形式」 を参照してください。 | 任意 | ||||
| 列挙 | ドキュメントの処理時にエラーが発生した場合に Atlas Data Federation が続行する方法を指定します。 たとえば、 Atlas Data Federation Atlas Data FederationがCSVファイルに書き込みを行っているときにドキュメント内の配列を検出した場合、 Atlas Data Federationはこの値を使用して、ドキュメントをスキップして他のドキュメントを処理するかどうかを決定します。 有効な値は以下のとおりです。
省略した場合、デフォルトは | 任意 |
フィールド | タイプ | 説明 | 必要性 | |
|---|---|---|---|---|
| オブジェクト | 集約パイプラインからドキュメントを書き込むロケーション。 | 必須 | |
| string | 集計パイプラインからドキュメントを書き込む Google Cloud Storage バケットの名前。 Google Cloud への生成された呼び出しでは、 たとえば、 | 必須 | |
| string | バケットがホストされている Google Cloud リージョンの名前。省略した場合、 はフェデレーティッドデータベースインスタンス構成を使用して、指定された | 任意 | |
| string | 集計パイプラインからドキュメントを書き込み (write)するファイルの名前。ファイル名は、定数とするか、または ステージに達するドキュメント内のフィールドから 動的に作成する 生成された Google Cloud Storage への呼び出しにより、 たとえば、 | 必須 | |
| オブジェクト | Google Cloud Storage 内のファイルの詳細。 | 必須 | |
| 列挙 | Google Cloud Storage 内のファイルの形式。値は次のいずれかになります。
1 この形式の場合、 詳細については、「制限 」を参照してください。 | 必須 |
フィールド | タイプ | 説明 | 必要性 |
|---|---|---|---|
| オブジェクト | 集約パイプラインからドキュメントを書き込むロケーション。 | 必須 |
| string | Atlas クラスターの名前。 | 必須 |
| string | Atlas クラスター上のコレクションの名前。 | 必須 |
| string | コレクションを含む Atlas クラスター上のデータベースの名前。 | 必須 |
| string | Atlas クラスターを含むプロジェクトの一意の識別子。 プロジェクト ID は、フェデレーティッドデータベースインスタンスを含むプロジェクトの ID である必要があります。 省略した場合、デフォルトはフェデレーティッドデータベースインスタンスを含むプロジェクトの ID。 | 任意 |
オプション
オプション | タイプ | 説明 | 必要性 | |
|---|---|---|---|---|
| ブール値 | バックグラウンドで集計操作を実行するためのフラグ。 省略した場合、デフォルトは 現在実行中のクエリがフェデレーティッドデータベースインスタンスへの接続を完了または切断するのを待たずに、他の新しいクエリを送信すると同時に、クエリがバックグラウンドで実行され続ける場合は、このオプションを使用します。 | 任意 |
例
ファイル名を作成
次の例は、定数$out string から、または ステージに到達するドキュメント内の同じまたは異なるデータ型のフィールドからファイル名を動的に作成するための$out 構文を示します。
簡単な string の例
1 GiB のデータを圧縮BSONファイルとしてmy-s3-bucketという名前のS3バケットに書込み (write) したいと考えています。
次の $out 構文を使用します。
{ "$out": { "s3": { "bucket": "my-s3-bucket", "filename": "big_box_store/", "format": { "name": "bson.gz" } } } }
s3.regionは省略されているため、Atlas Data Federation はストレージ構成から my-s3-bucket という名前のバケットがホストされているリージョンを決定します。$out は 5 つの圧縮された BSON ファイルを 書き込み (write)ます。
$outがbig_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 を使用します。
$outがbig_box_store/2.bson.gzと名付ける新しいファイルへの 2 番目の 200 MiB のデータ。$outがbig_box_store/3.bson.gzからbig_box_store/5.bson.gzまでの名前を付けるさらに 3 つのファイル。
ドキュメントの単一フィールド
という名前の S3 バケットに JSON ファイルに 90 MiB のデータを書込み (write)my-s3-bucket したいと考えています。
次の $out 構文を使用します。
{ "$out": { "s3": { "bucket": "my-s3-bucket", "region": "us-east-1", "filename": {"$toString": "$saleDate"}, "format": { "name": "json", "maxFileSize": "100MiB" } } } }
$out は、バケットのルートにある JSON ファイルに 90 MiB のデータを書き込み (write)ます。各JSONファイルには、同じsaleDate値を持つすべてのドキュメントが含まれています。$outは、ドキュメントのsaleDate値をstringに変換して、各ファイルに名前を付けます。
ドキュメントの複数のフィールド
176 MiB のデータをBSONファイルとしてmy-s3-bucketという名前のS3バケットに書込みます。
次の $out 構文を使用します。
{ "$out": { "s3": { "bucket": "my-s3-bucket", "region": "us-east-1", "filename": { "$concat": [ "persons/", "$name", "/", "$uniqueId", "/" ] }, "format": { "name": "bson", "maxFileSize": "200MiB" } } } }
$out は 176 MiB のデータを BSON ファイルに書き込み (write)ます。各ファイルに名前を付けるには、$out は次のものを連結します。
次のドキュメントからの 定数string
persons/とnameフィールドの string 値、フォワードスラッシュ(
/)、uniqueIdフィールドの string 値、およびフォワードスラッシュ(
/)。
各BSONファイルには、同じnameとuniqueId値を持つすべてのドキュメントが含まれています。$outは、ドキュメントのnameとuniqueId値を使用して各ファイルに名前を付けます。
ドキュメントの複数のタイプのフィールド
154 MiB のデータを圧縮JSONファイルとしてmy-s3-bucketという名前のS3バケットに書込みます。
次の$out構文を考えてみましょう。
{ "$out": { "s3": { "bucket": "my-s3-bucket", "region": "us-east-1", "filename": { "$concat": [ "big-box-store/", { "$toString": "$storeNumber" }, "/", { "$toString": "$saleDate" }, "/", "$partId", "/" ] }, "format": { "name": "json.gz", "maxFileSize": "200MiB" } } } }
$outは圧縮された JSON ファイルに 154 MiB のデータを書き込み (write)ます。各ファイルには、同じ storeNumber、 saleDate、 partId値を持つすべてのドキュメントが含まれています。各ファイルに名前を付けるには、 $outは次の要素を連結します。
big-box-store/の定数string値、storeNumberフィールドの一意の店舗番号の string 値、フォワードスラッシュ(
/)、saleDateフィールドからの日付の string 値、フォワードスラッシュ(
/)、partIdフィールドからの 部分 ID の string 値、およびフォワードスラッシュ(
/)。
ファイル名を作成
次の例は、定数$out string から、または ステージに到達するドキュメント内の同じまたは異なるデータ型のフィールドからファイル名を動的に作成するための$out 構文を示します。
簡単な string の例
圧縮BSONファイルとして1 GiB のデータをAzureストレージ アカウントmystorageaccountとmy-containerという名前のコンテナに書き込みます。
次の $out 構文を使用します。
{ "$out": { "azure": { "serviceURL": "http://mystorageaccount.blob.core.windows.net/", "containerName": "my-container", "filename": "big_box_store/", "format": { "name": "bson.gz" } } } }
azure.regionは省略されているため、Atlas Data Federation はストレージ構成から my-containerという名前のコンテナがホストされているリージョンを決定します。$out は 5 つの圧縮された BSON ファイルを 書き込み (write)ます。
$outがbig_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 を使用します。
$outがbig_box_store/2.bson.gzと名付ける新しいファイルへの 2 番目の 200 MiB のデータ。$outがbig_box_store/3.bson.gzからbig_box_store/5.bson.gzまでの名前を付けるさらに 3 つのファイル。
ドキュメントの単一フィールド
という名前の Azure Blob 90Storage コンテナの JSON ファイルに MiBmy-container のデータを書込みたいと考えています。
次の $out 構文を使用します。
{ "$out": { "azure": { "serviceURL": "http://mystorageaccount.blob.core.windows.net/", "containerName": "my-container", "region": "eastus2", "filename": {"$toString": "$saleDate"}, "format": { "name": "json", "maxFileSize": "100MiB" } } } }
$out は、コンテナのルートにある JSON ファイルに 90 MiB のデータの書き込み (write)を行います。各 JSON ファイルには、同じ saleDate 値を持つすべてのドキュメントが含まれています。$out は、ドキュメントの saleDate 値を使用して各ファイルに名前を付けます。string に変換されます。
ドキュメントの複数のフィールド
176 MiB のデータをBSONファイルとしてmy-containerという名前のAzure Blob Storage コンテナに書込みます。
次の $out 構文を使用します。
{ "$out": { "azure": { "serviceURL": "http://mystorageaccount.blob.core.windows.net/", "containerName": "my-container", "region": "eastus2", "filename": { "$concat": [ "persons/", "$name", "/", "$uniqueId", "/" ] }, "format": { "name": "bson", "maxFileSize": "200MiB" } } } }
$out は 176 MiB のデータを BSON ファイルに書き込み (write)ます。各ファイルに名前を付けるには、$out は次のものを連結します。
次のドキュメントからの 定数string
persons/とnameフィールドの string 値、フォワードスラッシュ(
/)、uniqueIdフィールドの string 値、およびフォワードスラッシュ(
/)。
各BSONファイルには、同じnameとuniqueId値を持つすべてのドキュメントが含まれています。$outは、ドキュメントのnameとuniqueId値を使用して各ファイルに名前を付けます。
ドキュメントの複数のタイプのフィールド
圧縮されたJSONファイルとしてmy-containerという名前のAzure Blob Storage コンテナに154 MiB のデータを書込み (write) する場合があります。
次の$out構文を考えてみましょう。
{ "$out": { "azure": { "serviceURL": "http://mystorageaccount.blob.core.windows.net/", "containerName": "my-container", "region": "eastus2", "filename": { "$concat": [ "big-box-store/", { "$toString": "$storeNumber" }, "/", { "$toString": "$saleDate" }, "/", "$partId", "/" ] }, "format": { "name": "json.gz", "maxFileSize": "200MiB" } } } }
$outは圧縮された JSON ファイルに 154 MiB のデータを書き込み (write)ます。各ファイルには、同じ storeNumber、 saleDate、 partId値を持つすべてのドキュメントが含まれています。各ファイルに名前を付けるには、 $outは次の要素を連結します。
big-box-store/の定数string値、storeNumberフィールドの一意の店舗番号の string 値、フォワードスラッシュ(
/)、saleDateフィールドからの日付の string 値、フォワードスラッシュ(
/)、partIdフィールドからの 部分 ID の string 値、およびフォワードスラッシュ(
/)。
ファイル名を作成
次の例は、定数$out string から、または ステージに到達するドキュメント内の同じまたは異なるデータ型のフィールドからファイル名を動的に作成するための$out 構文を示します。
簡単な string の例
my-gcs-bucket という名前の Google Cloud Storage バケットに、1 GiB のデータを圧縮 BSON ファイルとして書き込むとします。
次の $out 構文を使用します。
{ "$out": { "gcs": { "bucket": "my-gcs-bucket", "filename": "big_box_store/", "format": { "name": "bson.gz" } } } }
gcs.regionは省略されているため、Atlas Data Federation はストレージ構成から my-gcs-bucket という名前のバケットがホストされているリージョンを決定します。$out は 5 つの圧縮された BSON ファイルを 書き込み (write)ます。
$outがbig_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 を使用します。
$outがbig_box_store/2.bson.gzと名付ける新しいファイルへの 2 番目の 200 MiB のデータ。$outがbig_box_store/3.bson.gzからbig_box_store/5.bson.gzまでの名前を付けるさらに 3 つのファイル。
ドキュメントの単一フィールド
my-gcs-bucket という名前の Google Cloud Storage バケットに、90 MiB のデータを JSON ファイルに書き込むとします。
次の $out 構文を使用します。
{ "$out": { "gcs": { "bucket": "my-gcs-bucket", "region": "us-central1", "filename": {"$toString": "$saleDate"}, "format": { "name": "json", "maxFileSize": "100MiB" } } } }
$out は、バケットのルートにある JSON ファイルに 90 MiB のデータを書き込み (write)ます。各JSONファイルには、同じsaleDate値を持つすべてのドキュメントが含まれています。$outは、ドキュメントのsaleDate値をstringに変換して、各ファイルに名前を付けます。
ドキュメントの複数のフィールド
my-gcs-bucket という名前の Google Cloud Storage バケットに、176 MiBのデータを BSON ファイルとして書き込むとします。
次の $out 構文を使用します。
{ "$out": { "gcs": { "bucket": "my-gcs-bucket", "region": "us-central1", "filename": { "$concat": [ "persons/", "$name", "/", "$uniqueId", "/" ] }, "format": { "name": "bson", "maxFileSize": "200MiB" } } } }
$out は 176 MiB のデータを BSON ファイルに書き込み (write)ます。各ファイルに名前を付けるには、$out は次のものを連結します。
次のドキュメントからの 定数string
persons/とnameフィールドの string 値、フォワードスラッシュ(
/)、uniqueIdフィールドの string 値、およびフォワードスラッシュ(
/)。
各BSONファイルには、同じnameとuniqueId値を持つすべてのドキュメントが含まれています。$outは、ドキュメントのnameとuniqueId値を使用して各ファイルに名前を付けます。
ドキュメントの複数のタイプのフィールド
my-gcs-bucket という名前の Google Cloud Storage バケットに、154 MiB のデータを圧縮 JSON ファイルとして書き込むとします。
次の$out構文を考えてみましょう。
{ "$out": { "gcs": { "bucket": "my-gcs-bucket", "region": "us-central1", "filename": { "$concat": [ "big-box-store/", { "$toString": "$storeNumber" }, "/", { "$toString": "$saleDate" }, "/", "$partId", "/" ] }, "format": { "name": "json.gz", "maxFileSize": "200MiB" } } } }
$outは圧縮された JSON ファイルに 154 MiB のデータを書き込み (write)ます。各ファイルには、同じ storeNumber、 saleDate、 partId値を持つすべてのドキュメントが含まれています。各ファイルに名前を付けるには、 $outは次の要素を連結します。
big-box-store/の定数string値、storeNumberフィールドの一意の店舗番号の string 値、フォワードスラッシュ(
/)、saleDateフィールドからの日付の string 値、フォワードスラッシュ(
/)、partIdフィールドからの 部分 ID の string 値、およびフォワードスラッシュ(
/)。
バックグラウンドでのクエリの実行
次の例は、バックグラウンドで$out $outステージで終了する集計パイプラインを実行するための 構文を示しています。
db.runCommand({ "aggregate": "my-collection", "pipeline": [ { "$out": { "s3": { "bucket": "my-s3-bucket", "filename": { "$toString": "$saleDate" }, "format": { "name": "json" } } } } ], "background": true })
$out は、バケットのルートの JSON ファイルに経歴で書き込み (write)ます。各 JSON ファイルには、同じ saleDate 値を持つすべてのドキュメントが含まれています。$out は、ドキュメントの saleDate 値をstringに変換して、各ファイルに名前を付けます。
db.runCommand({ "aggregate": "my-collection", "pipeline": [ { "$out": { "azure": { "serviceURL": "http://mystorageaccount.blob.core.windows.net/", "containerName": "my-container", "filename": { "$toString": "$saleDate" }, "format": { "name": "json" } } } } ], "background": true })
$outは、経歴で JSON ファイルを Azure Blob ストレージ コンテナのルートに書き込み (write)ます。各 JSON ファイルには、同じ saleDate 値を持つすべてのドキュメントが含まれています。$outは、ドキュメントの saleDate 値を string に変換して、各ファイルに名前を付けます。
db.runCommand({ "aggregate": "my-collection", "pipeline": [ { "$out": { "gcs": { "bucket": "my-gcs-bucket", "filename": { "$toString": "$saleDate" }, "format": { "name": "json" } } } } ], "background": true })
$out は、バケットのルートの JSON ファイルに経歴で書き込み (write)ます。各 JSON ファイルには、同じ saleDate 値を持つすべてのドキュメントが含まれています。$out は、ドキュメントの saleDate 値をstringに変換して、各ファイルに名前を付けます。
db.runCommand({ "aggregate": "my-collection", "pipeline": [ { "$out": { "atlas": { "clusterName": "myTestCluster", "db": "sampleDB", "coll": "mySampleData" } } } ], "background": true })
$outは、経歴でmyTestClusterという名前の Atlas クラスター内のsampleDB.mySampleDataコレクションに書き込み (write)ます。
制限
string データ型
Atlas Data Federation は、ファイル名を解析するときに空のstring( "" )を null 値として解釈します。Atlas Data Federation で解析可能なファイル名を生成する場合は、 $convert を使用して null 値を持つ可能性のあるフィールド参照を空のstring onNull 値とラップします。
この例では、 フィールド値からファイル名を作成するときに、 yearフィールドの null 値を処理する方法を示しています。
{ "$out": { "s3": { "bucket": "my-s3-bucket", "region": "us-east-1", "filename": { "$concat": [ "big-box-store/", { "$convert": { "input": "$year", "to": "string", "onNull": "" } }, "/" ] }, "format": { "name": "json.gz", "maxFileSize": "200MiB" } } } }
一意のフィールドの数
CSV 、 TSV 、またはPerquetファイル形式に書き込む場合、Atlas Data Federation は 32000 を超える一意のフィールドをサポートしません。
CSV および TSV ファイル形式
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); } }
S3上の一部のデータは次のようになります。
clientId: .int = 102 phoneNumbers: .list: ..element = "123-4567" .list: ..element = "234-5678" clientInfo: .name = "Taylor" .occupation = "teacher" clientId: .string = "237" phoneNumbers: .list: ..element = "345-6789" clientInfo: .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 つの子(intとstring)を持ちます。
string データ型
Atlas Data Federation は、ファイル名を解析するときに空のstring( "" )を null 値として解釈します。Atlas Data Federation で解析可能なファイル名を生成する場合は、 $convert を使用して null 値を持つ可能性のあるフィールド参照を空のstring onNull 値とラップします。
この例では、 フィールド値からファイル名を作成するときに、 yearフィールドの null 値を処理する方法を示しています。
{ "$out": { "azure": { "serviceURL": "http://mystorageaccount.blob.core.windows.net/", "containerName": "my-container", "region": "eastus2", "filename": { "$concat": [ "big-box-store/", { "$convert": { "input": "$year", "to": "string", "onNull": "" } }, "/" ] }, "format": { "name": "json.gz", "maxFileSize": "200MiB" } } } }
一意のフィールドの数
CSV 、 TSV 、またはPerquetファイル形式に書き込む場合、Atlas Data Federation は 32000 を超える一意のフィールドをサポートしません。
CSV および TSV ファイル形式
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 ストレージの一部のデータは次のようになります。
clientId: .int = 102 phoneNumbers: .list: ..element = "123-4567" .list: ..element = "234-5678" clientInfo: .name = "Taylor" .occupation = "teacher" clientId: .string = "237" phoneNumbers: .list: ..element = "345-6789" clientInfo: .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 つの子(intとstring)を持ちます。
string データ型
Atlas Data Federation は、ファイル名を解析するときに空のstring( "" )を null 値として解釈します。Atlas Data Federation で解析可能なファイル名を生成する場合は、 $convert を使用して null 値を持つ可能性のあるフィールド参照を空のstring onNull 値とラップします。
この例では、 フィールド値からファイル名を作成するときに、 yearフィールドの null 値を処理する方法を示しています。
{ "$out": { "gcs": { "bucket": "my-gcs-bucket", "region": "us-central1", "filename": { "$concat": [ "big-box-store/", { "$convert": { "input": "$year", "to": "string", "onNull": "" } }, "/" ] }, "format": { "name": "json.gz", "maxFileSize": "200MiB" } } } }
一意のフィールドの数
CSV 、 TSV 、またはPerquetファイル形式に書き込む場合、Atlas Data Federation は 32000 を超える一意のフィールドをサポートしません。
CSV および TSV ファイル形式
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 を使用して GCP に 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); } }
Google Cloud Storage の Parquet データは次のようになります。
clientId: .int = 102 phoneNumbers: .list: ..element = "123-4567" .list: ..element = "234-5678" clientInfo: .name = "Taylor" .occupation = "teacher" clientId: .string = "237" phoneNumbers: .list: ..element = "345-6789" clientInfo: .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 つの子(intとstring)を持ちます。
このセクションは、クラウド サービス プロバイダーのストレージ機能にのみ適用されます。
エラー出力
Atlas Data Federation は、 $outステージに入り、次のいずれかの理由で書き込みができないドキュメントに対して、以下で説明するエラー処理メカニズムを使用します。
s3.filenameは string 値として評価されません。s3.filenameは書き込み不可のファイルと評価します。s3.format.nameはcsv、tsv、csv.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 は、エラーが発生したドキュメントをこのファイルに書込みます。 は |
out-error-index/<i>.json | Atlas Data Federation は、このファイルにエラー メッセージを書込みます。 各エラー メッセージには、エラーの説明と、 |
out-error- Summary.json | Atlas Data Federation は、集計操作中に発生したエラーの種類ごとに 1 つのサマリー ドキュメントをこのファイルに書込みます。 各サマリードキュメントには、エラーのタイプの説明と、そのタイプのエラーが発生したドキュメントの数が含まれています。 |
この例では、フェデレーティッドデータベースインスタンスで$outを使用してエラーファイルを生成する方法を示します。
次の集計パイプラインは、 analytics.customersサンプル データセット コレクション内のドキュメントをカスタマー日付の降順でソートし、最下位 3 人のカスタマーの_id 、 name 、 accountsフィールドをS3のyoungest-customers.csvという名前のファイルに書込みます。 customer-dataという名前のバケット。
db.customers.aggregate([ { "$sort": { "birthdate": -1 } }, { "$unset": [ "username", "address", "email", "tier_and_details", "birthdate" ] }, { "$limit": 3 }, { "$out": { "s3": { "bucket": "customer-data", "region": "us-east-2", "filename": "youngest-customers", "format": { "name": "csv" } } } } ])
accountsは配列フィールドであるため、 $outはs3.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.nameはcsv、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>/にある次の 3 つの特別なエラー ファイルに書込みます。
エラーファイル名 | 説明 |
|---|---|
out-error-docs/<i>.json | Atlas Data Federation は、エラーが発生したドキュメントをこのファイルに書込みます。
|
out-error-index/<i>.json | Atlas Data Federation は、このファイルにエラー メッセージを書込みます。 各エラー メッセージには、エラーの説明と、
|
out-error- Summary.json | Atlas Data Federation は、集計操作中に発生したエラーの種類ごとに 1 つのサマリー ドキュメントをこのファイルに書込みます。 各サマリードキュメントには、エラーのタイプの説明と、そのタイプのエラーが発生したドキュメントの数が含まれています。 |
この例では、フェデレーティッドデータベースインスタンスで$outを使用してエラーファイルを生成する方法を示します。
次の集計パイプラインは、 analytics.customersサンプル データセット コレクション内のドキュメントをカスタマー日付の降順でソートし、最下位 3 人のカスタマーの_id 、 name 、 accountsフィールドをAzureのyoungest-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://mystorageaccount.blob.core.windows.net/", "containerName": "customer-data", "region": "eastus2", "filename": "youngest-customers", "format": { "name": "csv" } } } } ])
accountsは配列フィールドであるため、 $outはazure.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.nameはcsv、tsv、csv.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 は、エラーが発生したドキュメントをこのファイルに書込みます。 は |
out-error-index/<i>.json | Atlas Data Federation は、このファイルにエラー メッセージを書込みます。 各エラー メッセージには、エラーの説明と、 |
out-error- Summary.json | Atlas Data Federation は、集計操作中に発生したエラーの種類ごとに 1 つのサマリー ドキュメントをこのファイルに書込みます。 各サマリードキュメントには、エラーのタイプの説明と、そのタイプのエラーが発生したドキュメントの数が含まれています。 |
この例では、フェデレーティッドデータベースインスタンスで$outを使用してエラーファイルを生成する方法を示します。
次の集計パイプラインは、analytics.customersサンプル データセット コレクション内のドキュメントをカスタマーの誕生日の降順でソートし、最も若い 3 人のカスタマーの _id、name、accounts フィールドを 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", "region": "us-central1", "filename": "youngest-customers", "format": { "name": "csv" } } } } ])
accountsは配列フィールドであるため、 $outはgcs.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"} }
このセクションは、クラウド サービス プロバイダー ストレージにのみ適用されます。