Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

$out Etapa (Atlas Data Federation)

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

  • Clúster de Atlas namespace

  • AWS CubosS3 con permisos de lectura y escritura

  • Contenedores de almacenamiento de blobs de Azure con permisos de lectura y escritura

  • Google Cloud Storage (GCS)

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

Debe tener:

Debe tener:

Debe tener:

Nota

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

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

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

s3

Objeto

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

Requerido

s3.bucket

string

Nombre del bucket S3 donde se escribirán los documentos de 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 cadena s3.bucket.

Por ejemplo, si estableces 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 bucket s3.bucket especificado.

Opcional

s3.filename

string

Nombre del archivo donde se escribirán los documentos del proceso de agregación. El nombre del archivo puede ser constante o generarse 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 tipo de datos string. Si existen archivos en S3 con el mismo nombre y ruta que los archivos recién generados, $out sobrescribe los archivos existentes con los nuevos.

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

Por ejemplo, si estableces 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 S3.

Requerido

s3
.format
.name

enum

Formato del archivo en S3. 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, escribe$out 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 S3. Al convertir de BSON a su formato preferido, el archivo de salida 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 el maxFileSize, Atlas Data Federation guarda el documento en su propio archivo. Se admiten los siguientes sufijos:

Base 10: escalado en múltiplos de 1.000

  • B

  • KB

  • MB

  • GB

  • TB

  • PB

Base 2: escalado 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 S3. Para el primer archivo, añade 1 antes de la extensión del nombre del archivo. Para cada archivo subsiguiente, Atlas Data Federation incrementa en uno el número añadido.

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

Opcional

s3
.format
.maxRowGroupSize

string

Solo compatible con el formato de archivo Parquet.

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

Opcional

s3
.format
.columnCompression

string

Solo compatible con el formato de archivo Parquet.

Tipo de compresión a aplicar para comprimir los datos dentro de un archivo Parquet al formatear el archivo Parquet. Valores válidos:

  • 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 hay errores durante el procesamiento de un documento. Por ejemplo, si Atlas Data Federation encuentra un arreglo en un documento cuando Atlas Data Federation escribe en un archivo CSV, Atlas Data Federation usa este valor para determinar si debe o no omitir el documento y procesar otros documentos. Los valores válidos son:

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

    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 guardar 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 guardarán los documentos del pipeline de agregación.

Requerido

azure.region

string

Nombre de la región 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 se evalúan como string creados dinámicamente a partir de los campos de los documentos que alcanzan la etapa $out.Si existen archivos en Azure Blob Storage con el mismo nombre y ruta que los archivos recién generados, $out sobrescribe los archivos existentes con los archivos 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, escribe$out 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 al formato preferido, el archivo de salida 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 el maxFileSize, Atlas Data Federation guarda el documento en su propio archivo. Se admiten los siguientes sufijos:

Base 10: escalado en múltiplos de 1.000

  • B

  • KB

  • MB

  • GB

  • TB

  • PB

Base 2: escalado 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 S3. Para el primer archivo, añade 1 antes de la extensión del nombre del archivo. Para cada archivo subsiguiente, Atlas Data Federation incrementa en uno el número añadido.

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

Opcional

azure
.format
.maxRowGroupSize

string

Solo compatible con el formato de archivo Parquet.

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

Opcional

azure
.format
.columnCompression

string

Solo compatible con el formato de archivo Parquet.

Tipo de compresión a aplicar para comprimir los datos dentro de un archivo Parquet al formatear el archivo Parquet. Valores válidos:

  • 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 hay errores durante el procesamiento de un documento. Por ejemplo, si Atlas Data Federation encuentra un arreglo en un documento cuando Atlas Data Federation escribe en un archivo CSV, Atlas Data Federation usa este valor para determinar si debe o no omitir el documento y procesar otros documentos. Los valores válidos son:

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

    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

gcs

Objeto

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

Requerido

gcs.bucket

string

Nombre del bucket de Google Cloud Storage en el que se guardarán los documentos provenientes del pipeline de agregación.

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

Por ejemplo, si estableces 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 Google Cloud Platform en la que se aloja el bucket. Si se omite, utiliza la configuración de la instancia federada de base de datos 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 proceso de agregación. El nombre del archivo puede ser constante o generarse dinámicamente a partir de los campos de los documentos que llegan a la $out etapa. Cualquier expresión de nombre de archivo que proporcione debe evaluarse como un string tipo de datos. Si existen archivos en Google Cloud Storage con el mismo nombre y ruta que los archivos recién generados, sobrescribe los archivos existentes con los$out nuevos.

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

Por ejemplo, si estableces 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 almacenamiento.

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, escribe$out 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 guardar los documentos desde el pipeline de agregación.

Requerido

clusterName

string

Nombre del clúster de 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 de Atlas. El ID del grupo debe ser el ID del Proyecto que contenga tu instancia de base de datos federada. Si se omite, se utilizará por defecto el ID del Proyecto que contiene la instancia federada de base de datos.

Opcional

Opción
Tipo
Descripción
Necesidad

background

booleano

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

{ "background" : true }

Utiliza esta opción si deseas enviar otras consultas nuevas sin esperar a que se completen las consultas en curso o desconectar la conexión de tu instancia federada de base de datos mientras las consultas continúan ejecutándose en segundo plano.

Opcional

Crear un nombre de archivo

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

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

Utilizando la siguiente $out sintaxis:

{
"$out": {
"s3": {
"bucket": "my-s3-bucket",
"filename": "big_box_store/",
"format": {
"name": "bson.gz"
}
}
}
}

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

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

    • El valor de s3.filename sirve como una constante en cada nombre de archivo. Este valor no depende de ningún campo o valor de documento.

    • Tu s3.filename termina con un delimitador, por lo que Atlas Data Federation añade el contador después de la constante.

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

    • Como no se cambió el tamaño máximo de archivo con s3.format.maxFileSize, Atlas Data Federation utiliza el valor por defecto de 200 MiB.

  2. Los segundos 200 MiB de datos a un nuevo archivo que $out big_box_store/2.bson.gznombra.

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

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

Utilizando la siguiente $out sintaxis:

{
"$out": {
"s3": {
"bucket": "my-s3-bucket",
"region": "us-east-1",
"filename": {"$toString": "$saleDate"},
"format": {
"name": "json",
"maxFileSize": "100MiB"
}
}
}
}

$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 valor saleDate. $out nombra cada archivo usando el valor saleDate de los documentos convertido a una cadena.

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

Utilizando la siguiente $out sintaxis:

{
"$out": {
"s3": {
"bucket": "my-s3-bucket",
"region": "us-east-1",
"filename": {
"$concat": [
"persons/",
"$name", "/",
"$uniqueId", "/"
]
},
"format": {
"name": "bson",
"maxFileSize": "200MiB"
}
}
}
}

$out escribe 176 MiB de datos en archivos BSON.Para nombrar cada archivo, $out concatena:

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

    • El valor string del campo name,

    • Una barra diagonal (/),

    • El valor de la string del campo uniqueId, y

    • Una barra diagonal (/).

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

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

Considere la siguiente $out sintaxis:

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

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

  • Un valor string que representa la identificación única de una tienda perteneciente al campo storeNumber.

  • Una barra diagonal (/),

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

  • Una barra diagonal (/),

  • Un valor de string del identificador de parte del campo partId, y

  • Una barra diagonal (/).

Crear un nombre de archivo

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

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

Utilizando la siguiente $out sintaxis:

{
"$out": {
"azure": {
"serviceURL": "http://mystorageaccount.blob.core.windows.net/",
"containerName": "my-container",
"filename": "big_box_store/",
"format": {
"name": "bson.gz"
}
}
}
}

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

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

    • El valor de azure.filename sirve como una constante en cada nombre de archivo. Este valor no depende de ningún campo o valor de documento.

    • Tu azure.filename termina con un delimitador, por lo que Atlas Data Federation añade el contador después de la constante.

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

    • Como no se cambió el tamaño máximo de archivo con azure.format.maxFileSize, Atlas Data Federation utiliza el valor por defecto de 200 MiB.

  2. Los segundos 200 MiB de datos a un nuevo archivo que $out big_box_store/2.bson.gznombra.

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

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

Utilizando la siguiente $out sintaxis:

{
"$out": {
"azure": {
"serviceURL": "http://mystorageaccount.blob.core.windows.net/",
"containerName": "my-container",
"region": "eastus2",
"filename": {"$toString": "$saleDate"},
"format": {
"name": "json",
"maxFileSize": "100MiB"
}
}
}
}

$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 valor saleDate. $out nombra cada archivo usando el valor saleDate de los documentos convertido a una cadena.

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

Utilizando la siguiente $out sintaxis:

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

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

    • El valor string del campo name,

    • Una barra diagonal (/),

    • El valor de la string del campo uniqueId, y

    • Una barra diagonal (/).

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

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

Considere la siguiente $out sintaxis:

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

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

  • Un valor string que representa la identificación única de una tienda perteneciente al campo storeNumber.

  • Una barra diagonal (/),

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

  • Una barra diagonal (/),

  • Un valor de string del identificador de parte del campo partId, y

  • Una barra diagonal (/).

Crear un nombre de archivo

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

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

Utilizando la siguiente $out sintaxis:

{
"$out": {
"gcs": {
"bucket": "my-gcs-bucket",
"filename": "big_box_store/",
"format": {
"name": "bson.gz"
}
}
}
}

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

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

    • El valor de gcs.filename sirve como una constante en cada nombre de archivo. Este valor no depende de ningún campo o valor de documento.

    • Tu gcs.filename termina con un delimitador, por lo que Atlas Data Federation añade el contador después de la constante.

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

    • Como no se cambió el tamaño máximo de archivo con gcs.format.maxFileSize, Atlas Data Federation utiliza el valor por defecto de 200 MiB.

  2. Los segundos 200 MiB de datos a un nuevo archivo que $out big_box_store/2.bson.gznombra.

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

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

Utilizando la siguiente $out sintaxis:

{
"$out": {
"gcs": {
"bucket": "my-gcs-bucket",
"region": "us-central1",
"filename": {"$toString": "$saleDate"},
"format": {
"name": "json",
"maxFileSize": "100MiB"
}
}
}
}

$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 valor saleDate. $out nombra cada archivo usando el valor saleDate de los documentos convertido a una cadena.

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

Utilizando la siguiente $out sintaxis:

{
"$out": {
"gcs": {
"bucket": "my-gcs-bucket",
"region": "us-central1",
"filename": {
"$concat": [
"persons/",
"$name", "/",
"$uniqueId", "/"
]
},
"format": {
"name": "bson",
"maxFileSize": "200MiB"
}
}
}
}

$out escribe 176 MiB de datos en archivos BSON.Para nombrar cada archivo, $out concatena:

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

    • El valor string del campo name,

    • Una barra diagonal (/),

    • El valor de la string del campo uniqueId, y

    • Una barra diagonal (/).

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

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

Considere la siguiente $out sintaxis:

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

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

  • Un valor string que representa la identificación única de una tienda perteneciente al campo storeNumber.

  • Una barra diagonal (/),

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

  • Una barra diagonal (/),

  • Un valor de string del identificador de parte del campo partId, y

  • Una barra diagonal (/).

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

{
"$out": {
"atlas": {
"clusterName": "myTestCluster",
"db": "sampleDB",
"coll": "mySampleData"
}
}
}

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

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

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

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

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

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

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 los 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 usando con $convert un onNull valor de cadena vacía.

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

{
"$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"
}
}
}
}

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

  • DBPointer

  • JavaScript

  • Código JavaScript con alcance

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

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

x.a,x.b
1,2

Atlas Data Federation representa todos los demás tipos de datos como cadenas de texto. Por lo tanto, los tipos de datos en MongoDB leídos desde el archivo CSV pueden no ser los mismos que los tipos de datos en los documentos BSON originales desde los cuales se escribieron los tipos de datos.

Para Parquet, Atlas Data Federation lee los campos que tienen valores nulos o no definidos como faltantes, porque Parquet no distingue entre valores nulos o no definidos y valores faltantes. Aunque 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.:

  • Elige una representación que permita que el archivo Parquet resultante pueda leerse con una herramienta ajena a MongoDB.

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

Considerar 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 a S3, el esquema del archivo Parquet para sus documentos BSON se vería 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 Parquet en S3 se verían similares a los siguientes:

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"

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

  • Atlas Data Federation mapea documentos en todos los niveles a un grupo Parquet.

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

  • Atlas Data Federation asigna los 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 nombra el grupo según el campo BSON. En el ejemplo anterior, Atlas Data Federation crea un grupo Parquet llamado clientId para el campo polimórfico llamado clientId, con dos elementos secundarios que se nombran según sus tipos BSON, int y string.

Atlas Data Federation interpreta las cadenas vacías"" () como null valores al analizar los 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 usando con $convert un onNull valor de cadena vacía.

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

{
"$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"
}
}
}
}

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

  • DBPointer

  • JavaScript

  • Código JavaScript con alcance

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

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

x.a,x.b
1,2

Atlas Data Federation representa todos los demás tipos de datos como cadenas de texto. Por lo tanto, los tipos de datos en MongoDB leídos desde el archivo CSV pueden no ser los mismos que los tipos de datos en los documentos BSON originales desde los cuales se escribieron los tipos de datos.

Para Parquet, Atlas Data Federation lee los campos que tienen valores nulos o no definidos como faltantes, porque Parquet no distingue entre valores nulos o no definidos y valores faltantes. Aunque 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.:

  • Elige una representación que permita que el archivo Parquet resultante pueda leerse con una herramienta ajena a MongoDB.

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

Considerar 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 escribes los documentos BSON anteriores en formato Parquet usando $out to Azure, el esquema de archivos Parquet para tus documentos BSON sería 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 Parquet en Azure Blob almacenamiento tendrían un aspecto similar al siguiente:

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"

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

  • Atlas Data Federation mapea documentos en todos los niveles a un grupo Parquet.

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

  • Atlas Data Federation asigna los 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 nombra el grupo según el campo BSON. En el ejemplo anterior, Atlas Data Federation crea un grupo Parquet llamado clientId para el campo polimórfico llamado clientId, con dos elementos secundarios que se nombran según sus tipos BSON, int y string.

Atlas Data Federation interpreta las cadenas vacías"" () como null valores al analizar los 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 usando con $convert un onNull valor de cadena vacía.

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

{
"$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"
}
}
}
}

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

  • DBPointer

  • JavaScript

  • Código JavaScript con alcance

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

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

x.a,x.b
1,2

Atlas Data Federation representa todos los demás tipos de datos como cadenas de texto. Por lo tanto, los tipos de datos en MongoDB leídos desde el archivo CSV pueden no ser los mismos que los tipos de datos en los documentos BSON originales desde los cuales se escribieron los tipos de datos.

Para Parquet, Atlas Data Federation lee los campos que tienen valores nulos o no definidos como faltantes, porque Parquet no distingue entre valores nulos o no definidos y valores faltantes. Aunque 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.:

  • Elige una representación que permita que el archivo Parquet resultante pueda leerse con una herramienta ajena a MongoDB.

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

Considerar 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 siguientes documentos BSON en formato Parquet usando $out a GCP, el esquema de archivos Parquet para tus documentos BSON sería similar a lo 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 Google Cloud Storage se verían similares a los siguientes:

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"

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

  • Atlas Data Federation mapea documentos en todos los niveles a un grupo Parquet.

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

  • Atlas Data Federation asigna los 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 nombra el grupo según el campo BSON. En el ejemplo anterior, Atlas Data Federation crea un grupo Parquet llamado clientId para el campo polimórfico llamado clientId, con dos elementos secundarios que se nombran según sus tipos BSON, int y string.

Esta sección se aplica sólo a las ofertas de almacenamiento de los 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 entran en la etapa y no se pueden escribir por alguna de las siguientes $out razones:

  • El s3.filename no se evalúa como un valor de string.

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

  • El valor se establece s3.format.name csvtsven,, csv.gz o,tsv.gz y el documento que se pasa a contiene tipos de datos que no son compatibles con el formato de archivo especificado. Para obtener una lista completa de los tipos de datos no compatibles, consulte $out el formato 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 guarda el documento que tuvo un error en este archivo. i comienza con 1 y se incrementa cada vez que el archivo en el que se escribe alcanza el maxFileSize. Luego, cualquier otro documento se escribe 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.

out-error-summary.json

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

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 datos de muestra analytics.customers por fecha de nacimiento del cliente descendente 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 bucket S3 llamado 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"
}
}
}
}
])

Debido accounts a que es un campo de matriz, $out encuentra un error cuando intenta escribir un documento s3.format.name csv en. Para manejar estos errores, Atlas Data Federation escribe en los siguientes tres archivos de error:

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

    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"}]
    }
  • 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 aumenta por cada error escrito en el archivo.

    s3://cliente-data/atlas-lago de datos-1773b3d5e2a7f3858530daf5/out-error-índice/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 la cantidad 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 entran en la etapa y no se pueden escribir por alguna de las siguientes $out razones:

  • El azure.filename no se evalúa como un valor de string.

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

  • El valor se establece azure.format.name csvtsven,, csv.gz o,tsv.gz y el documento que se pasa a contiene tipos de datos que no son compatibles con el formato de archivo especificado. Para obtener una lista completa de los tipos de datos no compatibles, consulte $out el formato 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 guarda 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 comienza con 0 y aumenta con cada mensaje de error adicional escrito en el archivo.

i comienza por 1 y se incrementa cada vez que el archivo que se está guardando llega a maxFileSize. A continuación, los demás mensajes de error se guardan en el nuevo archivo out-error-docs/<i+1>.json.

out-error-summary.json

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

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 datos de muestra analytics.customers por fecha de nacimiento del cliente descendente 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 contenedor de Azure Blob Storage llamado customer-data.

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

Debido accounts a que es un campo de matriz, $out encuentra un error cuando intenta escribir un documento azure.format.name csv en. Para manejar estos errores, Atlas Data Federation escribe en los siguientes tres archivos de error:

  • La siguiente salida muestra el primero de 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 aumenta por 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 la cantidad 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 entran en la etapa y no se pueden escribir por alguna de las siguientes $out razones:

  • El gcs.filename no se evalúa como un valor de string.

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

  • El valor se establece gcs.format.name csvtsven,, csv.gz o,tsv.gz y el documento que se pasa a contiene tipos de datos que no son compatibles con el formato de archivo especificado. Para obtener una lista completa de los tipos de datos no compatibles, consulte $out el formato 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 guarda el documento que tuvo un error en este archivo. i comienza con 1 y se incrementa cada vez que el archivo en el que se escribe alcanza el maxFileSize. Luego, cualquier otro documento se escribe 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.

out-error-summary.json

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

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

El siguiente pipeline de agregación ordena los documentos de la colección del conjunto de datos de muestra analytics.customers por fecha de nacimiento del cliente de forma descendente 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 bucket de Google Cloud almacenamiento llamado customer-data.

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

Debido accounts a que es un campo de matriz, $out encuentra un error cuando intenta escribir un documento gcs.format.name csv en. Para manejar estos errores, Atlas Data Federation escribe en los siguientes tres archivos de error:

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

    gcs://cliente-data/atlas-lago de datos-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 aumenta por cada error escrito en el archivo.

    gcs://cliente-data/atlas-lago de datos-1773b3d5e2a7f3858530daf5/out-error-índice/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 la cantidad de documentos pasados ​​a que encontraron un error debido $out al accounts campo de matriz.

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

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