Todos los productos
Search
Centro de documentos

DataWorks:Escritura de datos en MongoDB mediante una tarea por lotes

Última actualización: Sep 25, 2026

El plugin MongoDB Writer de DataWorks Data Integration sincroniza datos desde otros orígenes hacia MongoDB. En este tema se explica cómo configurar una sincronización por lotes de MaxCompute a MongoDB.

Requisitos previos

Antes de empezar, asegúrese de cumplir con los siguientes requisitos:

  • DataWorks está activado y ya agregó un origen de datos de MaxCompute.

  • Este tutorial utiliza un resource group exclusivo para Data Integration con el fin de ejecutar la tarea por lotes. Compre y configure este resource group antes de continuar. Para obtener más información, consulte Use an exclusive resource group for Data Integration.

    Nota

    También puede utilizar un resource group serverless. Para obtener más información, consulte Use a serverless resource group.

Preparación de los datos de ejemplo

Prepare una colección de MongoDB y una tabla de MaxCompute para la sincronización por lotes.

  1. Cree una tabla de MaxCompute y agregue datos.

    1. Cree una tabla particionada llamada test_write_mongo. Establezca el campo de partición como pt.

      CREATE TABLE IF NOT EXISTS test_write_mongo(
          id STRING ,
          col_string STRING,
          col_int int,
          col_bigint bigint,
          col_decimal decimal,
          col_date DATETIME,
          col_boolean boolean,
          col_array string
      ) PARTITIONED BY (pt STRING) LIFECYCLE 10;
    2. Agregue una partición con el valor 20230215.

      insert into test_write_mongo partition (pt='20230215')
      values ('11','name11',1,111,1.22,cast('2023-02-15 15:01:01' as datetime),true,'1,2,3');
    3. Compruebe que la tabla particionada se haya creado correctamente.

      SELECT * FROM test_write_mongo
      WHERE pt='20230215';
  2. Prepare la colección de destino en MongoDB.

    En este tutorial se usa ApsaraDB for MongoDB como ejemplo. Cree una colección llamada test_write_mongo.

    db.createCollection('test_write_mongo')

Configuración de la tarea por lotes

Paso 1: Agregar un origen de datos de MongoDB

Agregue un origen de datos de MongoDB y establezca una conexión de red entre este y el resource group exclusivo para Data Integration. Para obtener más información, consulte Configure a MongoDB data source.

Paso 2: Crear y configurar un nodo de sincronización por lotes

En DataWorks DataStudio, cree un nodo de sincronización por lotes y configure su origen y destino. Esta sección describe únicamente los parámetros clave. Deje el resto de los parámetros con sus valores predeterminados. Para consultar las instrucciones detalladas, revise Configure a task in the codeless UI.

  1. Configure la conexión de red para la sincronización.

    Seleccione el origen de datos de MongoDB, el origen de datos de MaxCompute y el resource group exclusivo para Data Integration. Después, compruebe la conectividad.

  2. Configure el origen y el destino.

    Seleccione la tabla particionada de MaxCompute y la colección de MongoDB. A continuación se describen los parámetros clave.

    Parámetro

    Descripción

    write mode

    Determina si se sobrescriben los datos existentes. Esta funcionalidad involucra dos ajustes relacionados: write mode y business primary key:

    • write mode:

      • Si selecciona No, el plugin inserta cada registro como un documento nuevo. Esta es la opción predeterminada.

      • Si selecciona Yes, debe especificar una business primary key. El plugin sobrescribe entonces los registros que comparten la misma business primary key.

    • business primary key: Especifica la clave principal de negocio de cada registro, la cual se utiliza para la operación de sobrescritura. Solo puede especificar un campo. En MongoDB, esto suele corresponder al campo _id.

    Nota

    Si establece write mode en Yes y especifica un campo distinto de _id como business primary key, podría producirse un error similar al siguiente: After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2". Este error ocurre porque los datos entrantes contienen un registro cuyo _id no coincide con el _id del documento existente identificado por la business primary key. Para obtener más información, consulte Error: After applying the update, the (immutable) field '_id' was found to have been altered to _id: "2".

    Pre-Import Statement

    Especifica una condición previa (PreSQL) que se ejecuta antes de la tarea de importación. La configuración debe estar en formato JSON e incluir las propiedades type y json.

    • type: Obligatorio. Los valores válidos son remove y drop (en minúsculas).

    • json:

      • Si establece type en remove, este parámetro es obligatorio. Su valor debe ser una consulta estándar de MongoDB. Para obtener más información, consulte Query Documents.

      • Si establece type en drop, este parámetro no es obligatorio.

  3. Configure la asignación de campos.

    Cuando el origen de datos es MongoDB, se utiliza Map Fields in Same Row de forma predeterminada. También puede hacer clic en el ícono icon para editar manualmente los campos de la tabla de origen. A continuación se muestra un ejemplo de edición manual.

    {"name":"id","type":"string"}
    {"name":"col_string","type":"string"}
    {"name":"col_int","type":"long"}
    {"name":"col_bigint","type":"long"}
    {"name":"col_decimal","type":"double"}
    {"name":"col_date","type":"date"}
    {"name":"col_boolean","type":"bool"}
    {"name":"col_array","type":"array","splitter":","}

    Después de editar los campos manualmente, la interfaz muestra la asignación entre los campos de origen y de destino.

    Campo de origen

    Campo de destino

    id

    {"name":"id","type":"string"}

    col_string

    {"name":"col_string","type":"string"}

    col_int

    {"name":"col_int","type":"long"}

    col_bigint

    {"name":"col_bigint","type":"long"}

    col_decimal

    {"name":"col_decimal","type":"double"}

    col_date

    {"name":"col_date","type":"date"}

    col_boolean

    {"name":"col_boolean","type":"bool"}

    col_array

    {"name":"col_array","type":"array","splitter":","}

Paso 3: Confirmar y desplegar el nodo de sincronización por lotes

Para ejecutar esta tarea de forma periódica en un workspace en modo estándar, debe confirmar y desplegar el nodo de sincronización por lotes en el entorno de producción. Para obtener más información, consulte node deployment.

Paso 4: Ejecutar el nodo de sincronización por lotes y consultar los resultados

Una vez configurado el nodo, ejecútelo. Cuando finalice la tarea, consulte los datos sincronizados en la colección de MongoDB. La tarea crea un registro de documento en la base de datos de destino con los siguientes campos y valores: _id es 63ecc513143e565c9b037623, col_array es [1, 2, 3], col_bigint es 111, col_boolean es true, col_date es 2023-02-15T07:01:01.000Z, col_decimal es 1.22, col_int es 1, col_string es name11 y id es 11.

Apéndice: Conversión de tipos de datos

Valores compatibles para el parámetro type

Los valores compatibles para el parámetro type son: INT, LONG, DOUBLE, STRING, BOOL, DATE y ARRAY.

Tipo array

Para escribir datos como un array de MongoDB, establezca el parámetro type en ARRAY y configure la propiedad splitter. Por ejemplo:

  • Los datos de origen son la cadena: a,b,c.

  • En la configuración de la tarea, type se establece en ARRAY y splitter en ,.

  • Tras ejecutar la tarea, los datos resultantes en MongoDB son: ["a","b","c"].