Docs Menu
Docs Home
/ /

$out Etapa (Federación de Datos Atlas)

$out toma los documentos devueltos por la canalización de agregación y los escribe en una colección específica. El operador $out debe ser la última etapa de la canalización de agregación. En Atlas Data Federation, puede usar $out para escribir datos de cualquiera de los almacenes de instancias de bases de datos federadas compatibles o múltiples almacenes de instancias de bases de datos federadas compatibles al utilizar consultas federadas a cualquiera de los siguientes:

  • Espacio de nombres del clúster Atlas

  • AWS CubosS con permisos de lectura y escritura3

  • Contenedores deAzure Blob Storage con permisos de lectura y escritura

  • Almacenamiento en la nube de Google (GCS)

Debe conectarse a su instancia de base de datos federada para usar $out.

Debes tener:

Debes tener:

Debes tener:

Nota

Para usar $out para escribir en una colección en una base de datos diferente en el mismo clúster Atlas, su clúster Atlas debe estar en MongoDB versión 7.0 o posterior.

Debe ser un usuario de base de datos con uno de los siguientes roles:

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}
Campo
Tipo
Descripción
Necesidad

s3

Objeto

Ubicación para escribir los documentos desde el pipeline de agregación.

Requerido

s3.bucket

string

Nombre del depósito S3 donde se escribirán los documentos desde la canalización de agregación.

La llamada generada a S3 inserta un / entre s3.bucket y.s3.filename No / añada un a su s3.bucket cadena.

Por ejemplo, si establece s3.bucket en myBucket y s3.filename en myPath/myData, Atlas Data Federation escribe la ubicación de salida de la siguiente manera:

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

Requerido

s3.region

string

Nombre de la región de AWS donde se aloja el bucket. Si se omite, se utiliza la configuración de la instancia de base de datos federada para determinar la región donde se aloja el s3.bucket especificado.

Opcional

s3.filename

string

Nombre del archivo al que se guardarán los documentos de la pipeline de agregación. El nombre de archivo puede ser constante o creado dinámicamente a partir de los campos de los documentos que lleguen a la etapa $out. Cualquier expresión de nombre de archivo que proporciones debe evaluarse a un tipo de dato string.

IMPORTANTE: Si hay archivos en S3 con el mismo nombre y ruta que los archivos recién generados, $out sobrescribe los archivos existentes con los archivos recién generados.

La llamada generada a S3 inserta un / entre s3.bucket s3.filenamey. No anteponga un / a la s3.filename cadena.

Por ejemplo, si establece s3.filename en myPath/myData y s3.bucket en myBucket, Atlas Data Federation escribe la ubicación de salida de la siguiente manera:

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

Requerido

s3.format

Objeto

Detalles del archivo en 3S.

Requerido

s3
.format
.name

enum

Formato del archivo en S.3 El valor puede ser uno de los siguientes:

  • bson

  • bson.gz

  • csv

  • csv.gz

  • json 1

  • json.gz 1

  • parquet

  • tsv

  • tsv.gz

1 Para este formato, $out escribe datos en formato JSON extendido de MongoDB.

Para obtener más información, consulte Limitaciones.

Requerido

s3
.format
.maxFileSize

bytes

Tamaño máximo del archivo BSON sin comprimir en S.Al convertir3 de BSON a su formato preferido, el archivo resultante puede ser más pequeño (por ejemplo, al convertir a Parquet) o más grande (por ejemplo, al convertir a CSV).

Si un documento es mayor que maxFileSize, Atlas Data Federation lo escribe en su propio archivo. Se admiten los siguientes sufijos:

Base 10: escala en múltiplos de 1000

  • B

  • KB

  • MB

  • GB

  • TB

  • PB

Base 2: escala en múltiplos de 1024

  • KiB

  • MiB

  • GiB

  • TiB

  • PiB

Si se omite, es por defecto 200MiB.

Cuando se alcanza el límite de tamaño del archivo actual, Atlas Data Federation crea un nuevo archivo en S.3 Añade un 1 antes de la extensión del nombre del primer archivo. Para cada archivo subsiguiente, Atlas Data Federation incrementa el número añadido en uno.

Por ejemplo, <filename>.1.<fileformat> y <filename>.2.<fileformat>.

Opcional

s3
.format
.maxRowGroupSize

string

Compatible únicamente con el formato de archivo Parquet.

Tamaño máximo del grupo de filas que se usa al escribir en el archivo Parquet. Si se omite, el valor predeterminado es 128 MiB o el valor de s3.format.maxFileSize, el que sea menor. El valor máximo permitido es 1 GB.

Opcional

s3
.format
.columnCompression

string

Compatible únicamente con el formato de archivo Parquet.

Tipo de compresión que se aplica para comprimir datos dentro de un archivo Parquet al formatearlo. Los valores válidos son:

  • gzip

  • snappy

  • uncompressed

Si se omite, es por defecto snappy.

Para obtener más información, consulte Formatos de datos admitidos.

Opcional

errorMode

enum

Especifica cómo debe proceder Atlas Data Federation si se producen errores al procesar un documento. Por ejemplo, si Atlas Data Federation encuentra una matriz en un documento mientras escribe en un archivo CSV, Atlas Data Federation utiliza este valor para determinar si se omite el documento y se procesan otros. Los valores válidos son:

  • continue Para omitir el documento y continuar procesando los documentos restantes. Atlas Data Federation también escribe el documento que causó el error en un archivo de errores.

    Para obtener más información, consulteErrores.

  • stop detenerse en ese punto y no procesar los documentos restantes.

Si se omite, es por defecto continue.

Opcional

Campo
Tipo
Descripción
Necesidad

azure

Objeto

Ubicación para escribir los documentos desde el pipeline de agregación.

Requerido

azure.serviceURL

string

URL de la cuenta de almacenamiento de Azure en la que se escribirán documentos desde la canalización de agregación.

Requerido

azure.containerName

string

Nombre del contenedor de Azure Blob Storage en el que se escribirán documentos desde la canalización de agregación.

Requerido

azure.region

string

Nombre de la región de Azure que aloja el contenedor de Blob Storage.

Requerido

azure.filename

string

Nombre del archivo en el que guardar documentos a partir de la pipeline de agregación.

Acepta valores constantes o valores que evalúan como,string creados dinámicamente a partir de los campos de los documentos que llegan a la etapa $out. Si hay archivos en Azure Blob Storage con el mismo nombre y ruta de acceso que los archivos recién generados, $out sobrescribe los archivos existentes con los recién generados.

Requerido

azure.format

Objeto

Detalles del archivo en Azure Blob Storage.

Requerido

azure
.format
.name

enum

Formato del archivo en Azure Blob Storage. El valor puede ser uno de los siguientes:

  • bson

  • bson.gz

  • csv

  • csv.gz

  • json 1

  • json.gz 1

  • parquet

  • tsv

  • tsv.gz

1 Para este formato, $out escribe datos en formato JSON extendido de MongoDB.

Para obtener más información, consulte Limitaciones.

Requerido

azure
.format
.maxFileSize

bytes

Tamaño máximo del documento BSON sin comprimir en Azure Blob Storage. Al convertir de BSON a tu formato preferido, el archivo de salida resultante podría ser más pequeño (por ejemplo, al convertir a Parquet) o más grande (por ejemplo, al convertir a CSV).

Si un documento es mayor que maxFileSize, Atlas Data Federation lo escribe en su propio archivo. Se admiten los siguientes sufijos:

Base 10: escala en múltiplos de 1000

  • B

  • KB

  • MB

  • GB

  • TB

  • PB

Base 2: escala en múltiplos de 1024

  • KiB

  • MiB

  • GiB

  • TiB

  • PiB

Si se omite, es por defecto 200MiB.

Cuando se alcanza el límite de tamaño del archivo actual, Atlas Data Federation crea un nuevo archivo en S.3 Añade un 1 antes de la extensión del nombre del primer archivo. Para cada archivo subsiguiente, Atlas Data Federation incrementa el número añadido en uno.

Por ejemplo, <filename>.1.<fileformat> y <filename>.2.<fileformat>.

Opcional

azure
.format
.maxRowGroupSize

string

Compatible únicamente con el formato de archivo Parquet.

Tamaño máximo del grupo de filas que se usa al escribir en el archivo Parquet. Si se omite, el valor predeterminado es 128 MiB o el valor de azure.format.maxFileSize, el que sea menor. El valor máximo permitido es 1 GB.

Opcional

azure
.format
.columnCompression

string

Compatible únicamente con el formato de archivo Parquet.

Tipo de compresión que se aplica para comprimir datos dentro de un archivo Parquet al formatearlo. Los valores válidos son:

  • gzip

  • snappy

  • uncompressed

Si se omite, es por defecto snappy.

Para obtener más información, consulte Formatos de datos admitidos.

Opcional

errorMode

enum

Especifica cómo debe proceder Atlas Data Federation cuando detecta un error al procesar un documento. Los valores válidos son:

  • continue Para omitir el documento y continuar procesando los documentos restantes. Atlas Data Federation registra el error en un archivo de errores.

  • stop Para detener el proceso sin procesar los documentos restantes, Atlas Data Federation registra el error en un archivo de errores.

Si se omite, es por defecto continue.

Para obtener más información,consulte Errores.

Opcional

Campo
Tipo
Descripción
Necesidad

gcs

Objeto

Ubicación para escribir los documentos desde el pipeline de agregación.

Requerido

gcs.bucket

string

Nombre del depósito de Google Cloud Storage donde se escribirán los documentos desde la canalización de agregación.

La llamada generada a Google Cloud inserta un / entre gcs.bucket y gcs.filename. No añadas un / a la cadena gcs.bucket.

Por ejemplo, si establece gcs.bucket en myBucket y gcs.filename en myPath/myData, Atlas Data Federation escribe la ubicación de salida de la siguiente manera:

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

Requerido

gcs.region

string

Nombre de la región de AWS donde se aloja el bucket. Si se omite, se utiliza la configuración de la instancia de base de datos federada para determinar la región donde se aloja el gcs.bucket especificado.

Opcional

gcs.filename

string

Nombre del archivo donde se escribirán los documentos del flujo de trabajo de agregación. El nombre de archivo puede ser constante o crearse dinámicamente a partir de los campos de los documentos que llegan a la etapa $out. Cualquier expresión de nombre de archivo que proporcione debe evaluarse como un string tipo de datos. Si hay archivos en Google Cloud Storage con el mismo nombre y ruta que los archivos recién generados, $out sobrescribe los archivos existentes con los nuevos.

La llamada generada a Google Cloud Storage inserta un / entre gcs.bucket y gcs.filename. No antepongas un / a la cadena gcs.filename.

Por ejemplo, si establece gcs.filename en myPath/myData y gcs.bucket en myBucket, Atlas Data Federation escribe la ubicación de salida de la siguiente manera:

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

Requerido

gcs.format

Objeto

Detalles del archivo en Google Cloud Storage.

Requerido

gcs
.format
.name

enum

Formato del archivo en Google Cloud Storage. El valor puede ser uno de los siguientes:

  • bson

  • bson.gz

  • csv

  • csv.gz

  • json 1

  • json.gz 1

  • parquet

  • tsv

  • tsv.gz

1 Para este formato, $out escribe datos en formato JSON extendido de MongoDB.

Para obtener más información, consulte Limitaciones.

Requerido

Campo
Tipo
Descripción
Necesidad

atlas

Objeto

Ubicación para escribir los documentos desde el pipeline de agregación.

Requerido

clusterName

string

Nombre del cluster Atlas.

Requerido

coll

string

Nombre de la colección en el clúster Atlas.

Requerido

db

string

Nombre de la base de datos en el clúster Atlas que contiene la colección.

Requerido

projectId

string

Identificador único del proyecto que contiene el clúster Atlas. El ID del proyecto debe ser el mismo que el del proyecto que contiene la instancia de base de datos federada. Si se omite, se usa el ID predeterminado del proyecto que contiene la instancia de base de datos federada.

Opcional

Opción
Tipo
Descripción
Necesidad

background

booleano

Marca para ejecutar operaciones de agregación en segundo plano. Si se omite, el valor predeterminado es false. Si se establece en true, Atlas Data Federation ejecuta las consultas en segundo plano.

{ "background" : true }

Utilice esta opción si desea enviar otras consultas nuevas sin esperar a que se completen las consultas que se están ejecutando actualmente o desconectar su conexión de instancia de base de datos federada mientras las consultas continúan ejecutándose en segundo plano.

Opcional

Crear un nombre de archivo

Los siguientes ejemplos muestran sintaxis $out para crear dinámicamente un nombre de archivo a partir de una cadena constante o de los campos del mismo tipo de datos o de tipos de datos diferentes en los documentos que llegan a la etapa $out.

Ejemplo

Desea escribir 1 GiB de datos como archivos BSON comprimidos en un depósito S3 my-s3-bucket llamado.

Usando la siguiente sintaxis $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}

Se omite el y,s3.region por lo tanto, Atlas Data Federation determina la región donde se aloja el depósito llamado a my-s3-bucket partir de la configuración de almacenamiento. $out escribe cinco archivos BSON comprimidos:

  1. Los primeros 200 MiB de datos a un archivo que $out nombra big_box_store/1.bson.gz.

    • El valor s3.filename funciona como constante en cada nombre de archivo. Este valor no depende de ningún campo ni valor del documento.

    • Su s3.filename termina con un delimitador, por lo que Atlas Data Federation agrega el contador después de la constante.

    • Si no terminara con un delimitador, Atlas Data Federation habría agregado un . entre la constante y el contador, como big_box_store.1.bson.gz

    • Debido a que no cambió el tamaño máximo de archivo usando s3.format.maxFileSize, Atlas Data Federation usa el valor predeterminado de 200 MiB.

  2. El segundo 200 MiB de datos a un nuevo archivo que $out big_box_store/2.bson.gzllama.

  3. Tres archivos más que $out nombran big_box_store/3.bson.gz big_box_store/5.bson.gzdel al.

Ejemplo

Desea escribir 90 MiB de datos en archivos JSON en un depósito S3 my-s3-bucket llamado.

Usando la siguiente sintaxis $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 escribe 90 MiB de datos en archivos JSON en la raíz del bucket. Cada archivo JSON contiene todos los documentos con el mismo saleDate valor. $out nombra cada archivo utilizando el valor de los documentos, saleDate convertido a una cadena.

Ejemplo

Desea escribir 176 MiB de datos como archivos BSON en un depósito S3 my-s3-bucket llamado.

Usando la siguiente sintaxis $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 escribe 176 MiB de datos en archivos BSON.Para nombrar cada archivo, $out concatena:

  • Una cadena constante persons/ y, de los documentos:

    • El valor de cadena del campo name,

    • Una barra diagonal (/),

    • El valor de la cadena del campo uniqueId, y

    • Una barra diagonal (/).

Cada archivo BSON contiene todos los documentos con los mismos name uniqueId valores y. $out nombra cada archivo utilizando losname uniqueId valores y de los documentos.

Ejemplo

Desea escribir 154 MiB de datos como archivos JSON comprimidos en un depósito S3 my-s3-bucket llamado.

Considere la siguiente sintaxis $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 escribe 154 MiB de datos en archivos JSON comprimidos, donde cada archivo contiene todos los documentos con los mismos storeNumber saleDate partId valores, y. Para nombrar cada archivo, $out concatena:

  • Un valor de cadena constante de big-box-store/,

  • Un valor de cadena de un número de tienda único en el campo storeNumber,

  • Una barra diagonal (/),

  • Un valor de cadena de la fecha del campo saleDate,

  • Una barra diagonal (/),

  • Un valor de cadena de ID de pieza del campo partId, y

  • Una barra diagonal (/).

Crear un nombre de archivo

Los siguientes ejemplos muestran sintaxis $out para crear dinámicamente un nombre de archivo a partir de una cadena constante o de los campos del mismo tipo de datos o de tipos de datos diferentes en los documentos que llegan a la etapa $out.

Ejemplo

Se desea guardar 1 GiB de datos como archivos BSON comprimidos en una cuenta de almacenamiento Azure mystorageaccount y un contenedor llamado my-container.

Usando la siguiente sintaxis $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}

Se omite el y,azure.region por lo tanto, Atlas Data Federation determina la región donde está alojado el contenedor llamado a my-container partir de la configuración de almacenamiento. $out escribe cinco archivos BSON comprimidos:

  1. Los primeros 200 MiB de datos a un archivo que $out nombra big_box_store/1.bson.gz.

    • El valor azure.filename funciona como constante en cada nombre de archivo. Este valor no depende de ningún campo ni valor del documento.

    • Su azure.filename termina con un delimitador, por lo que Atlas Data Federation agrega el contador después de la constante.

    • Si no terminara con un delimitador, Atlas Data Federation habría agregado un . entre la constante y el contador, como big_box_store.1.bson.gz

    • Debido a que no cambió el tamaño máximo de archivo usando azure.format.maxFileSize, Atlas Data Federation usa el valor predeterminado de 200 MiB.

  2. El segundo 200 MiB de datos a un nuevo archivo que $out big_box_store/2.bson.gzllama.

  3. Tres archivos más que $out nombran big_box_store/3.bson.gz big_box_store/5.bson.gzdel al.

Ejemplo

Desea escribir 90 MiB de datos en archivos JSON en un contenedor de Azure Blob Storage my-container llamado.

Usando la siguiente sintaxis $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 escribe 90 MiB de datos en archivos JSON en la raíz del contenedor. Cada archivo JSON contiene todos los documentos con el mismo saleDate valor. $out nombra cada archivo utilizando el valor de los documentos, saleDate convertido a una cadena.

Ejemplo

Desea escribir 176 MiB de datos como archivos BSON en un contenedor de Azure Blob Storage my-container llamado.

Usando la siguiente sintaxis $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 escribe 176 MiB de datos en archivos BSON.Para nombrar cada archivo, $out concatena:

  • Una cadena constante persons/ y, de los documentos:

    • El valor de cadena del campo name,

    • Una barra diagonal (/),

    • El valor de la cadena del campo uniqueId, y

    • Una barra diagonal (/).

Cada archivo BSON contiene todos los documentos con los mismos name uniqueId valores y. $out nombra cada archivo utilizando losname uniqueId valores y de los documentos.

Ejemplo

Desea escribir 154 MiB de datos como archivos JSON comprimidos en un contenedor de Azure Blob Storage my-container llamado.

Considere la siguiente sintaxis $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 escribe 154 MiB de datos en archivos JSON comprimidos, donde cada archivo contiene todos los documentos con los mismos storeNumber saleDate partId valores, y. Para nombrar cada archivo, $out concatena:

  • Un valor de cadena constante de big-box-store/,

  • Un valor de cadena de un número de tienda único en el campo storeNumber,

  • Una barra diagonal (/),

  • Un valor de cadena de la fecha del campo saleDate,

  • Una barra diagonal (/),

  • Un valor de cadena de ID de pieza del campo partId, y

  • Una barra diagonal (/).

Crear un nombre de archivo

Los siguientes ejemplos muestran sintaxis $out para crear dinámicamente un nombre de archivo a partir de una cadena constante o de los campos del mismo tipo de datos o de tipos de datos diferentes en los documentos que llegan a la etapa $out.

Ejemplo

Desea escribir 1 GiB de datos como archivos BSON comprimidos en un depósito de Google Cloud Storage my-gcs-bucket llamado.

Usando la siguiente sintaxis $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}

Se omite el y,gcs.region por lo tanto, Atlas Data Federation determina la región donde se aloja el depósito llamado a my-gcs-bucket partir de la configuración de almacenamiento. $out escribe cinco archivos BSON comprimidos:

  1. Los primeros 200 MiB de datos a un archivo que $out nombra big_box_store/1.bson.gz.

    • El valor gcs.filename funciona como constante en cada nombre de archivo. Este valor no depende de ningún campo ni valor del documento.

    • Su gcs.filename termina con un delimitador, por lo que Atlas Data Federation agrega el contador después de la constante.

    • Si no terminara con un delimitador, Atlas Data Federation habría agregado un . entre la constante y el contador, como big_box_store.1.bson.gz

    • Debido a que no cambió el tamaño máximo de archivo usando gcs.format.maxFileSize, Atlas Data Federation usa el valor predeterminado de 200 MiB.

  2. El segundo 200 MiB de datos a un nuevo archivo que $out big_box_store/2.bson.gzllama.

  3. Tres archivos más que $out nombran big_box_store/3.bson.gz big_box_store/5.bson.gzdel al.

Ejemplo

Desea escribir 90 MiB de datos en archivos JSON en un depósito de Google Cloud Storage my-gcs-bucket llamado.

Usando la siguiente sintaxis $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 escribe 90 MiB de datos en archivos JSON en la raíz del bucket. Cada archivo JSON contiene todos los documentos con el mismo saleDate valor. $out nombra cada archivo utilizando el valor de los documentos, saleDate convertido a una cadena.

Ejemplo

Desea escribir 176 MiB de datos como archivos BSON en un depósito de Google Cloud Storage llamado. my-gcs-bucket

Usando la siguiente sintaxis $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 escribe 176 MiB de datos en archivos BSON.Para nombrar cada archivo, $out concatena:

  • Una cadena constante persons/ y, de los documentos:

    • El valor de cadena del campo name,

    • Una barra diagonal (/),

    • El valor de la cadena del campo uniqueId, y

    • Una barra diagonal (/).

Cada archivo BSON contiene todos los documentos con los mismos name uniqueId valores y. $out nombra cada archivo utilizando losname uniqueId valores y de los documentos.

Ejemplo

Desea escribir 154 MiB de datos como archivos JSON comprimidos en un depósito de Google Cloud Storage my-gcs-bucket llamado.

Considere la siguiente sintaxis $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 escribe 154 MiB de datos en archivos JSON comprimidos, donde cada archivo contiene todos los documentos con los mismos storeNumber saleDate partId valores, y. Para nombrar cada archivo, $out concatena:

  • Un valor de cadena constante de big-box-store/,

  • Un valor de cadena de un número de tienda único en el campo storeNumber,

  • Una barra diagonal (/),

  • Un valor de cadena de la fecha del campo saleDate,

  • Una barra diagonal (/),

  • Un valor de cadena de ID de pieza del campo partId, y

  • Una barra diagonal (/).

Esta sintaxis de $out envía los datos agregados a una sampleDB.mySampleData colección en el clúster Atlas myTestCluster denominada. La sintaxis no especifica un ID de proyecto; $out utiliza el ID del proyecto que contiene la instancia de base de datos federada.

Ejemplo

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

El siguiente ejemplo muestra la sintaxis $out para ejecutar una canalización de agregación que finaliza con la etapa $out en segundo plano.

Ejemplo

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

$out escribe en archivos JSON en la raíz del bucket en segundo plano. Cada archivo JSON contiene todos los documentos con el mismo saleDate valor. $out nombra cada archivo utilizando el valor de los documentos, saleDate convertido a una cadena.

Ejemplo

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 escribe en archivos JSON en la raíz del contenedor de Azure Blob Storage en segundo plano. Cada archivo JSON contiene todos los documentos con el mismo saleDate valor. $out asigna un nombre a cada archivo utilizando el valor de los documentossaleDate convertido a una cadena.

Ejemplo

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

$out escribe en archivos JSON en la raíz del bucket en segundo plano. Cada archivo JSON contiene todos los documentos con el mismo saleDate valor. $out nombra cada archivo utilizando el valor de los documentos, saleDate convertido a una cadena.

Ejemplo

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

$out escribe sampleDB.mySampleData en la colección en el clúster Atlas llamado myTestCluster en segundo plano.

Atlas Data Federation interpreta las cadenas vacías"" () como null valores al analizar nombres de archivo. Si desea que Atlas Data Federation genere nombres de archivo analizables, envuelva las referencias de campo que podrían tener null valores mediante $convert con un onNull valor de cadena vacía.

Ejemplo

Este ejemplo muestra cómo manejar valores nulos en el campo year al crear un nombre de archivo a partir del valor del campo.

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}

Al escribir en formato de archivo CSV, TSV o Parquet, Atlas Data Federation no admite más de 32000 campos únicos.

Al escribir en formato CSV o TSV, Atlas Data Federation no admite los siguientes tipos de datos en los documentos:

  • Arreglos

  • Puntero de base de datos

  • JavaScript

  • Código JavaScript con alcance

  • Tipo de datos de clave mínimo o máximo

En un archivo CSV, Atlas Data Federation representa los documentos anidados mediante la notación de punto (.). Por ejemplo, Atlas Data Federation escribe { x: { a: 1, b: 2 } } de la siguiente manera en el archivo CSV:

x.a,x.b
1,2

Atlas Data Federation representa todos los demás tipos de datos como cadenas. Por lo tanto, los tipos de datos que MongoDB lee del archivo CSV podrían no coincidir con los tipos de datos de los documentos BSON originales desde los que se escribieron.

Para Parquet, Atlas Data Federation lee los campos con valores nulos o indefinidos como faltantes, ya que Parquet no distingue entre valores nulos o indefinidos y faltantes. Si bien Atlas Data Federation admite todos los tipos de datos, para los tipos de datos BSON que no tienen un equivalente directo en Parquet, como JavaScript, expresiones regulares, etc., realiza lo siguiente:

  • Elige una representación que permite volver a leer el archivo Parquet resultante mediante una herramienta que no sea MongoDB.

  • Almacena un esquema MongoDB en los metadatos clave/valor del archivo Parquet para que Atlas Data Federation pueda reconstruir el documento BSON original con los tipos de datos correctos si Atlas Data Federation vuelve a leer el archivo Parquet.

Ejemplo

Considere los siguientes documentos BSON:

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

Si guardas los documentos BSON mencionados anteriormente en formato Parquet utilizando $out a S3, el esquema del archivo Parquet para los documentos BSON se parecería al siguiente:

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

Los datos de Parquet en S3 se verían similares a los siguientes:

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"

El ejemplo anterior demuestra cómo Atlas Data Federation maneja tipos de datos complejos:

  • Atlas Data Federation asigna documentos de todos los niveles a un grupo Parquet.

  • Atlas Data Federation codifica matrices utilizando el LIST tipo lógico y la estructura obligatoria de lista o elemento de tres niveles. Para obtener más información, consulte Listas.

  • Atlas Data Federation asigna campos BSON polimórficos a un grupo de varias columnas de un solo tipo, ya que Parquet no admite columnas polimórficas. Atlas Data Federation asigna al grupo el nombre del campo BSON. En el ejemplo anterior, Atlas Data Federation crea un grupo Parquet llamado clientId para el campo polimórfico clientId con dos hijos llamados y, int stringrespectivamente.

Atlas Data Federation interpreta las cadenas vacías"" () como null valores al analizar nombres de archivo. Si desea que Atlas Data Federation genere nombres de archivo analizables, envuelva las referencias de campo que podrían tener null valores mediante $convert con un onNull valor de cadena vacía.

Ejemplo

Este ejemplo muestra cómo manejar valores nulos en el campo year al crear un nombre de archivo a partir del valor del campo.

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}

Al escribir en formato de archivo CSV, TSV o Parquet, Atlas Data Federation no admite más de 32000 campos únicos.

Al escribir en formato CSV o TSV, Atlas Data Federation no admite los siguientes tipos de datos en los documentos:

  • Arreglos

  • Puntero de base de datos

  • JavaScript

  • Código JavaScript con alcance

  • Tipo de datos de clave mínimo o máximo

En un archivo CSV, Atlas Data Federation representa los documentos anidados mediante la notación de punto (.). Por ejemplo, Atlas Data Federation escribe { x: { a: 1, b: 2 } } de la siguiente manera en el archivo CSV:

x.a,x.b
1,2

Atlas Data Federation representa todos los demás tipos de datos como cadenas. Por lo tanto, los tipos de datos que MongoDB lee del archivo CSV podrían no coincidir con los tipos de datos de los documentos BSON originales desde los que se escribieron.

Para Parquet, Atlas Data Federation lee los campos con valores nulos o indefinidos como faltantes, ya que Parquet no distingue entre valores nulos o indefinidos y faltantes. Si bien Atlas Data Federation admite todos los tipos de datos, para los tipos de datos BSON que no tienen un equivalente directo en Parquet, como JavaScript, expresiones regulares, etc., realiza lo siguiente:

  • Elige una representación que permite volver a leer el archivo Parquet resultante mediante una herramienta que no sea MongoDB.

  • Almacena un esquema MongoDB en los metadatos clave/valor del archivo Parquet para que Atlas Data Federation pueda reconstruir el documento BSON original con los tipos de datos correctos si Atlas Data Federation vuelve a leer el archivo Parquet.

Ejemplo

Considere los siguientes documentos BSON:

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

Si escribe los documentos BSON anteriores en formato Parquet mediante $out en Azure, el esquema de archivo Parquet para sus documentos BSON se verá similar al siguiente:

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

Los datos de Parquet en Azure Blob Storage se verían similares a los siguientes:

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"

El ejemplo anterior demuestra cómo Atlas Data Federation maneja tipos de datos complejos:

  • Atlas Data Federation asigna documentos de todos los niveles a un grupo Parquet.

  • Atlas Data Federation codifica matrices utilizando el LIST tipo lógico y la estructura obligatoria de lista o elemento de tres niveles. Para obtener más información, consulte Listas.

  • Atlas Data Federation asigna campos BSON polimórficos a un grupo de varias columnas de un solo tipo, ya que Parquet no admite columnas polimórficas. Atlas Data Federation asigna al grupo el nombre del campo BSON. En el ejemplo anterior, Atlas Data Federation crea un grupo Parquet llamado clientId para el campo polimórfico clientId con dos hijos llamados y, int stringrespectivamente.

Atlas Data Federation interpreta las cadenas vacías"" () como null valores al analizar nombres de archivo. Si desea que Atlas Data Federation genere nombres de archivo analizables, envuelva las referencias de campo que podrían tener null valores mediante $convert con un onNull valor de cadena vacía.

Ejemplo

Este ejemplo muestra cómo manejar valores nulos en el campo year al crear un nombre de archivo a partir del valor del campo.

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}

Al escribir en formato de archivo CSV, TSV o Parquet, Atlas Data Federation no admite más de 32000 campos únicos.

Al escribir en formato CSV o TSV, Atlas Data Federation no admite los siguientes tipos de datos en los documentos:

  • Arreglos

  • Puntero de base de datos

  • JavaScript

  • Código JavaScript con alcance

  • Tipo de datos de clave mínimo o máximo

En un archivo CSV, Atlas Data Federation representa los documentos anidados mediante la notación de punto (.). Por ejemplo, Atlas Data Federation escribe { x: { a: 1, b: 2 } } de la siguiente manera en el archivo CSV:

x.a,x.b
1,2

Atlas Data Federation representa todos los demás tipos de datos como cadenas. Por lo tanto, los tipos de datos que MongoDB lee del archivo CSV podrían no coincidir con los tipos de datos de los documentos BSON originales desde los que se escribieron.

Para Parquet, Atlas Data Federation lee los campos con valores nulos o indefinidos como faltantes, ya que Parquet no distingue entre valores nulos o indefinidos y faltantes. Si bien Atlas Data Federation admite todos los tipos de datos, para los tipos de datos BSON que no tienen un equivalente directo en Parquet, como JavaScript, expresiones regulares, etc., realiza lo siguiente:

  • Elige una representación que permite volver a leer el archivo Parquet resultante mediante una herramienta que no sea MongoDB.

  • Almacena un esquema MongoDB en los metadatos clave/valor del archivo Parquet para que Atlas Data Federation pueda reconstruir el documento BSON original con los tipos de datos correctos si Atlas Data Federation vuelve a leer el archivo Parquet.

Ejemplo

Considere los siguientes documentos BSON:

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

Si escribe los documentos BSON anteriores en formato Parquet usando $out en GCP, el esquema de archivo Parquet para sus documentos BSON se verá similar al siguiente:

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

Sus datos de Parquet en Google Cloud Storage se verían similares a los siguientes:

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"

El ejemplo anterior demuestra cómo Atlas Data Federation maneja tipos de datos complejos:

  • Atlas Data Federation asigna documentos de todos los niveles a un grupo Parquet.

  • Atlas Data Federation codifica matrices utilizando el LIST tipo lógico y la estructura obligatoria de lista o elemento de tres niveles. Para obtener más información, consulte Listas.

  • Atlas Data Federation asigna campos BSON polimórficos a un grupo de varias columnas de un solo tipo, ya que Parquet no admite columnas polimórficas. Atlas Data Federation asigna al grupo el nombre del campo BSON. En el ejemplo anterior, Atlas Data Federation crea un grupo Parquet llamado clientId para el campo polimórfico clientId con dos hijos llamados y, int stringrespectivamente.

Esta sección se aplica únicamente a las ofertas de almacenamiento de proveedores de servicios en la nube.

Atlas Data Federation utiliza el mecanismo de manejo de errores que se describe a continuación para los documentos que ingresan a la etapa y no se pueden escribir por una de las siguientes $out razones:

  • El s3.filename no evalúa un valor de cadena.

  • El s3.filename se evalúa como un archivo en el que no se puede escribir.

  • El valor se establece s3.format.name csvtsven,, csv.gz o,tsv.gz y el documento transferido a contiene tipos de datos no compatibles con el formato de archivo especificado. Para obtener una lista completa de los tipos de datos no compatibles,$out consulte Formatos de archivo CSV y TSV.

Si encuentra uno de los errores anteriores al procesar un documento, Atlas Data Federation escribe en los siguientes tres archivos de error especiales en $out la s3://<bucket-name>/atlas-data-lake-<correlation-id>/ ruta:

Nombre del archivo de error
Descripción

out-error-docs/<i>.json

Atlas Data Federation escribe el documento que encontró un error en este archivo. i comienza con 1 y se incrementa cada vez que el archivo en el que se escribe llega a maxFileSize. A continuación, los documentos posteriores se escriben en el nuevo archivo out-error-docs/<i+1>.json.

out-error-index/<i>.json

Atlas Data Federation guarda un mensaje de error en este archivo. Cada mensaje de error contiene una descripción del error y un valor de índice n que comienza con 0 y se incrementa con cada mensaje de error adicional escrito en el archivo. i comienza con 1 y se incrementa cada vez que el archivo al que se escribe alcanza el maxFileSize. A continuación, cualquier mensaje de error adicional se escribe en el nuevo archivo out-error-docs/<i+1>.json.

resumen-de-errores-de-salida.json

Atlas Data Federation crea un único documento de resumen para cada tipo de error detectado durante una operación de agregación en este archivo. Cada documento de resumen contiene una descripción del tipo de error y un recuento del número de documentos que lo detectaron.

Ejemplo

Este ejemplo muestra cómo generar archivos de error utilizando en una instancia de base de datos $out federada.

La siguiente secuencia de agregación ordena los documentos en la colección de datos de analytics.customers muestra en orden descendente de la fecha de nacimiento del cliente e intenta escribir los _id campos, name y accounts de los tres clientes más jóvenes youngest-customers.csv en el archivo llamado en el depósito S3 customer-data llamado.

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"
}
}
}
])

Dado que accounts es un campo de matriz, encuentra un error al intentar escribir un$out documento s3.format.name csv en. Para gestionar estos errores, Atlas Data Federation escribe en los siguientes tres archivos de errores:

  • La siguiente salida muestra el primero de los tres documentos escritos en el archivo out-error-docs/1.json:

    s3://datos-del-cliente/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"}],
    }
  • La siguiente salida muestra el primero de tres mensajes de error escritos en el archivo out-error-index/1.json. El campo n comienza en 0 y se incrementa con cada error escrito en el archivo.

    s3://datos-del-cliente/atlas-data-lake-1773b3d5e2a7f3858530daf5/índice-de-error-de-salida/1.json
    {
    "n" : {"$numberInt": "0"},
    "error" : "field accounts is of unsupported type array"
    }
  • La siguiente salida muestra el documento de resumen de errores escrito en el out-error-summary archivo. El count campo representa el número de documentos pasados ​​a que encontraron un error debido $out al accounts campo de matriz.

    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 utiliza el mecanismo de manejo de errores que se describe a continuación para los documentos que ingresan a la etapa y no se pueden escribir por una de las siguientes $out razones:

  • El azure.filename no evalúa un valor de cadena.

  • El azure.filename se evalúa como un archivo en el que no se puede escribir.

  • El valor se establece azure.format.name csvtsven,, csv.gz o,tsv.gz y el documento transferido a contiene tipos de datos no compatibles con el formato de archivo especificado. Para obtener una lista completa de los tipos de datos no compatibles,$out consulte Formatos de archivo CSV y TSV.

Si encuentra uno de los errores anteriores al procesar un documento, Atlas Data Federation escribe en los siguientes tres archivos de error especiales en $out la http://<storage-account>.blob.core.windows.net/<container-name>/atlas-data-lake-<correlation-id>/ ruta:

Nombre del archivo de error
Descripción

out-error-docs/<i>.json

Atlas Data Federation escribe el documento que encontró un error en este archivo.

i comienza con 1 y se incrementa cuando el archivo que se está escribiendo alcanza el maxFileSize. A continuación, cualquier documento adicional se escribe en el nuevo archivo out-error-docs/<i+1>.json.

out-error-index/<i>.json

Atlas Data Federation escribe un mensaje de error en este archivo. Cada mensaje de error contiene una descripción del error y un valor de índice n que empieza por 0 y se incrementa con cada mensaje de error adicional que se escribe en el archivo.

i Comienza con 1 y se incrementa cada vez que el archivo en el que se escribe llega a maxFileSize. A continuación, los mensajes de error posteriores se escriben en el nuevo archivo out-error-docs/<i+1>.json.

resumen-de-errores-de-salida.json

Atlas Data Federation crea un único documento de resumen para cada tipo de error detectado durante una operación de agregación en este archivo. Cada documento de resumen contiene una descripción del tipo de error y un recuento del número de documentos que lo detectaron.

Ejemplo

Este ejemplo muestra cómo generar archivos de error utilizando en una instancia de base de datos $out federada.

La siguiente canalización de agregación ordena los documentos en la colección de conjuntos de datos de analytics.customers muestra en orden descendente de la fecha de nacimiento del cliente e intenta escribir los _id campos, name y accounts de los tres clientes más jóvenes en el archivo youngest-customers.csv denominado en el contenedor de Azure Blob Storage customer-data denominado.

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"
}
}
}
])

Dado que accounts es un campo de matriz, encuentra un error al intentar escribir un$out documento azure.format.name csv en. Para gestionar estos errores, Atlas Data Federation escribe en los siguientes tres archivos de errores:

  • La siguiente salida muestra el primero de los tres documentos escritos en el archivo out-error-docs/1.json:

    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"}],
    }
  • La siguiente salida muestra el primero de tres mensajes de error escritos en el archivo out-error-index/1.json. El campo n comienza en 0 y se incrementa con cada error escrito en el archivo.

    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"
    }
  • La siguiente salida muestra el documento de resumen de errores escrito en el out-error-summary archivo. El count campo representa el número de documentos pasados ​​a que encontraron un error debido $out al accounts campo de matriz.

    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 utiliza el mecanismo de manejo de errores que se describe a continuación para los documentos que ingresan a la etapa y no se pueden escribir por una de las siguientes $out razones:

  • El gcs.filename no evalúa un valor de cadena.

  • El gcs.filename se evalúa como un archivo en el que no se puede escribir.

  • El valor se establece gcs.format.name csvtsven,, csv.gz o,tsv.gz y el documento transferido a contiene tipos de datos no compatibles con el formato de archivo especificado. Para obtener una lista completa de los tipos de datos no compatibles,$out consulte Formatos de archivo CSV y TSV.

Si encuentra uno de los errores anteriores al procesar un documento, Atlas Data Federation escribe en los siguientes tres archivos de error especiales en $out la gcs://<bucket-name>/atlas-data-lake-<correlation-id>/ ruta:

Nombre del archivo de error
Descripción

out-error-docs/<i>.json

Atlas Data Federation escribe el documento que encontró un error en este archivo. i comienza con 1 y se incrementa cada vez que el archivo en el que se escribe llega a maxFileSize. A continuación, los documentos posteriores se escriben en el nuevo archivo out-error-docs/<i+1>.json.

out-error-index/<i>.json

Atlas Data Federation guarda un mensaje de error en este archivo. Cada mensaje de error contiene una descripción del error y un valor de índice n que comienza con 0 y se incrementa con cada mensaje de error adicional escrito en el archivo. i comienza con 1 y se incrementa cada vez que el archivo al que se escribe alcanza el maxFileSize. A continuación, cualquier mensaje de error adicional se escribe en el nuevo archivo out-error-docs/<i+1>.json.

resumen-de-errores-de-salida.json

Atlas Data Federation crea un único documento de resumen para cada tipo de error detectado durante una operación de agregación en este archivo. Cada documento de resumen contiene una descripción del tipo de error y un recuento del número de documentos que lo detectaron.

Ejemplo

Este ejemplo muestra cómo generar archivos de error utilizando en una instancia de base de datos $out federada.

La siguiente secuencia de agregación ordena los documentos en la colección de datos de muestra analytics.customers en orden descendente de la fecha de nacimiento del cliente e intenta escribir los campos _id, name y accounts de los tres clientes más jóvenes en el archivo llamado youngest-customers.csv en el depósito de Google Cloud Storage llamado customer-data.

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"
}
}
}
])

Dado que accounts es un campo de matriz, encuentra un error al intentar escribir un$out documento gcs.format.name csv en. Para gestionar estos errores, Atlas Data Federation escribe en los siguientes tres archivos de errores:

  • La siguiente salida muestra el primero de los tres documentos escritos en el archivo out-error-docs/1.json:

    gcs://datos-del-cliente/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"}],
    }
  • La siguiente salida muestra el primero de tres mensajes de error escritos en el archivo out-error-index/1.json. El campo n comienza en 0 y se incrementa con cada error escrito en el archivo.

    gcs://datos-del-cliente/atlas-data-lake-1773b3d5e2a7f3858530daf5/out-error-index/1.json
    {
    "n" : {"$numberInt": "0"},
    "error" : "field accounts is of unsupported type array"
    }
  • La siguiente salida muestra el documento de resumen de errores escrito en el out-error-summary archivo. El count campo representa el número de documentos pasados ​​a que encontraron un error debido $out al accounts campo de matriz.

    gcs://datos-del-cliente/atlas-data-lake-1773b3d5e2a7f3858530daf5/resumen-de-errores-de-salida.json
    {
    "errorType": "field accounts is of unsupported type array",
    "count": {"$numberInt":"3"}
    }

Esta sección se aplica únicamente al almacenamiento del proveedor de servicios en la nube.

Tip

Volver

$merge

En esta página