还在傻傻复制粘贴?n8n Merge 节点才是数据拼接的“手术刀”
大家好,我是 N8N大学 的主编。很多刚接触 n8n 的同学,在面对来自两个不同源头的数据时,第一反应往往是写代码节点(Code)或者用复杂的 IF 逻辑去手动拼接。
其实,你完全不需要这么折腾。n8n 官方早就为我们准备好了终极武器——Merge(合并)节点。它就像一把瑞士军刀,专门处理数据的“拉郎配”。
今天,笔者就带大家硬核拆解 Merge 节点的 7 种核心模式。拒绝正确的废话,咱们直接上干货,教你如何像老司机一样处理数据流。
Merge 节点到底在干什么?
简单来说,Merge 节点就是处理“多对多”关系的。它接收两条(或多条)数据流,然后根据你设定的规则,决定它们的最终命运。
在 n8n 中,最常见的场景是:一条流处理“订单数据”,另一条流处理“用户信息”。如何把订单里的 user_id 对应上用户信息里的详情?这就是 Merge 的工作。
核心实操:7 种模式图文详解
打开你的 n8n,拖入一个 Merge 节点,点击 "Mode" 下拉框,你会看到 7 个选项。别慌,我们一个个拆解。
1. Append(追加模式)
这是最简单粗暴的模式。
- 逻辑:把 Input 1 的数据原样保留,再把 Input 2 的数据接在后面。就像把两张纸粘在一起。
- 场景:合并两个日期范围不同的报表(例如:周一的数据 + 周二的数据)。
- 注意:如果两条流的数据结构(字段名)不同,它也会强行合并,缺失的字段为 null。
2. Keep All Items(保留所有项)
这是 Append 的“膨胀版”。
- 逻辑:Input 1 有 N 条数据,Input 2 有 M 条数据。结果是 N × M 条数据。它会为 Input 1 的每一条数据,都配上 Input 2 的所有数据。
- 场景:批量发送邮件。Input 1 是 100 个客户,Input 2 是 5 种邮件模板。结果就是 500 条组合数据(每个客户收到 5 封邮件)。
3. Merge By Key(按键合并 - 最常用!)
这就是传说中的 "VLOOKUP" 功能,数据清洗的神器。
- 逻辑:指定一个“钥匙”(Key),比如
user_id。两边数据中 ID 相同的,就会被合并成一条。 - 场景:订单表(有
user_id) + 用户表(有user_id和address) = 带收货地址的订单表。 - 关键参数:你需要在 "Input Data Field Name" 里填入字段名。如果两边字段名不一样,可以用 Set 节点先重命名。
4. Merge By Position(按位置合并)
严格按顺序一一对应。
- 逻辑:Input 1 的第 1 条 和 Input 2 的第 1 条 合并;第 2 条 和 第 2 条 合并。
- 场景:非常少见,通常用于处理确定顺序的数据流。
- 警告:如果两边数量不一致,多出来的部分会被丢弃。慎用!
5. Wait Mode(等待模式)
这是 n8n 的高级玩法,专门解决“鸡生蛋还是蛋生鸡”的问题。
6. Wait For Both(等两个都来)
只有当 Input 1 和 Input 2 都触发了数据,节点才会向下执行。它会把最近一次收到的两份数据拼在一起。
- 场景:Webhook A 收到“付款通知”,Webhook B 收到“发货通知”。只有当这两个事件都发生了,才触发后续的短信通知。
7. Wait For First Input / Wait For Second Input(等指定的一个)
逻辑很简单:A 来了就用 A 的数据往下走;B 来了就用 B 的数据往下走。
- 场景:双保险机制。比如一个流程通过 Webhook 接收数据,另一个流程通过轮询(Polling)获取数据。只要有一个成功获取,就继续执行,避免空等。
实战避坑指南:笔者的血泪经验
在 N8N大学 的实战训练营里,很多学员在 Merge 节点踩过坑。这里分享两个最常见的:
1. “按键合并”找不到数据?
很多时候是因为数据类型不匹配。比如 Input 1 的 id 是数字 123,而 Input 2 的 id 是字符串 "123"。在 n8n 里,这被视为不同的值。解决办法:在合并前,用 Set 节点或 Code 节点强制转换类型。
2. 数据丢失之谜
在使用 "Keep All Items" 时,如果你开启了 "Resolve Output"(解析输出),可能会丢失某些字段。如果你发现合并后字段少了,试着把 "Resolve Output" 关掉,或者检查 "Options" 里的设置。
FAQ 问答
Q1: Merge 节点和 Aggregate 节点有什么区别?
A: 简单说,Merge 是“拼接”(把两堆积木搭在一起),Aggregate 是“统计”(把积木按颜色分类数数)。如果你要计算总数、求平均值,请用 Aggregate;如果你要合并详情,请用 Merge。
Q2: 为什么我的 "Merge By Key" 结果是空的?
A: 最大的可能是“钥匙”没对上。请检查两边字段名是否完全一致(大小写敏感),以及数据里是否真的存在相同的 Key 值。建议先用 View/Download JSON 看清楚数据长什么样。
Q3: Merge 节点可以处理超过 2 个输入吗?
A: 可以!点击节点下方的 "Add Input" 即可增加输入端口。你可以把 A、B、C 三份数据同时汇入一个 Merge 节点进行处理。
总结与资源
Merge 节点是 n8n 数据流处理的枢纽。掌握它,意味着你已经跨过了“简单连接”的门槛,开始真正处理复杂的业务逻辑。
如果你还在为数据流转发愁,不妨打开 n8n 亲手试一试这 7 种模式。我是 N8N大学,致力于让你的每一次自动化都不仅是可行的,而且是优雅的。