
# MongoDB Combine函数说明最佳实践
#### **函数概述**
combine() 函数是 MongoDB Reader 插件中用于高级字段处理的功能。该函数提供了一种数据迁移方法：在字段映射配置中明确指定的字段将正常迁移，而 MongoDB 中未明确配置的剩余字段则会自动合并成一个统一的 JSON 字符串。
#### **工作模式**
当在字段映射中使用 combine() 函数时，数据集成将执行以下操作：
1. 配置字段优先处理：配置中明确指定的字段将按正常方式迁移。
2. 剩余字段自动合并：文档中所有未被明确指定的字段将被收集并合并为一个 JSON 对象。
#### **使用示例**
假设源MongoDB文档结构如下：
```
{
  "_id": "user_001",
  "username": "john_doe",
  "email": "john@example.com",
  "age": 30,
  "address":
 {
    "city": "beijing",
    "district": "chaoyang"
  },
  "preferences":
 {
    "theme": "dark",
    "language": "zh-CN"
  },
  "last_login": "2024-01-15T10:30:00Z",
  "login_count": 142
}
```
目的端Mysql表结构如下：
```
CREATE TABLE `combine_test`
 (
  `id` varchar(100) DEFAULT NULL,
  `username` varchar(100) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL
,  `age` int(11) DEFAULT NULL,
  `address` varchar(100) DEFAULT NULL,
  `combine` text
) 
ENGINE=InnoDB DEFAULT CHARSET=utf8
```
在该迁移场景中，源文档中的 _id、username、email、age 和 address 字段将按常规字段映射方式独立迁移，而文档中所有其他剩余字段内容将通过 combine() 函数合并，并以统一的 JSON 格式迁移至目标端的 combine 字段。
为实现上述迁移逻辑，可按以下方式配置数据集成作业：
在字段映射配置中新增一个自定义字段，将其键（key）设置为 combine，值（value）配置为 combine() 函数。此配置将确保未被显式映射的所有剩余字段自动聚合，并作为完整的 JSON 对象写入目标表的 combine 列。
图1参数配置   
![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002535667587.png "点击放大")
完成ETL任务的配置与执行后，数据将严格按照预设的映射规则进行迁移，并成功写入MySQL目标数据库。
图2数据写入成功   
![](https://support.huaweicloud.com/usermanual-dataartsstudio/zh-cn_image_0000002535521847.png "点击放大")
