场景导入:别让杂乱的数据拖垮你的自动化流程
在做 n8n 自动化时,你是否遇到过这种情况?从 API 拉回来一大堆数据,里面混杂着无效的、未完成的、或者格式不对的“垃圾信息”。如果直接处理,不仅效率低,还容易报错。
笔者见过太多新手直接把所有数据塞进下一步,结果导致数据库被脏数据污染,或者邮件发给了错误的人。其实,n8n 早就内置了一个“守门员”——Filter 节点。
今天,N8N大学 就手把手教你如何利用 Filter 节点处理数组数据,精准筛选出有效信息。这不仅是技术操作,更是优化工作流逻辑的关键一步。
核心实操:三步搞定数组筛选
假设我们要处理一个电商订单列表,需要筛选出“已支付”且“金额大于100”的订单。我们将模拟一个包含多个订单对象的数组数据。
第一步:准备数据源(模拟数组)
首先,我们需要一个包含数组的 JSON 数据。在 n8n 中,你可以使用 Manual (手动触发) 节点或 Set (设置) 节点来模拟。
在 Set 节点的 "Fields to Set" 中,输入如下 JSON 数据:
{
"orders": [
{ "id": 1, "status": "paid", "amount": 150 },
{ "id": 2, "status": "pending", "amount": 200 },
{ "id": 3, "status": "paid", "amount": 50 },
{ "id": 4, "status": "paid", "amount": 300 }
]
}
这里我们模拟了4个订单,其中只有第1个和第4个是既已支付又金额大于100的有效数据。
第二步:连接 Filter 节点并配置规则
这是最关键的一步。将 Set 节点连接到 Filter 节点。注意,n8n 的 Filter 节点默认是对单条数据进行判断,而我们需要处理的是数组。
在 Filter 节点的配置中:
- 设置数据来源: 在 "Input Data" 选项中,确保选择的是 "From previous node"(如果只有一个 Set 节点)。通常 n8n 会自动处理。
- 理解 n8n 的数据结构: 当 n8n 接收到一个包含数组的 JSON 时,它会将数组中的每个对象视为一条独立的 "Item"。这是 n8n 处理数组的核心机制。
- 配置条件: 在 "Condition" 部分,我们需要配置逻辑规则。点击 "Add Condition"。
- 第一条规则:字段选择
orders.status(注意:如果数据结构是扁平的,直接选status;如果是嵌套的,需先用 Spreadsheet File 或 Set 节点展开数组。为了教学清晰,我们假设经过 Split Out 节点将数组展开了,或者我们直接在 Set 节点中生成扁平数据)。 - 操作符选择:String → Equal。
- 值设置为:
paid。
- 第一条规则:字段选择
- 添加第二条规则: 点击 "Add Condition"。
- 字段选择:
amount。 - 操作符选择:Number → Greater。
- 值设置为:
100。
- 字段选择:
- 设置逻辑关系: 确保 "Combine" 选项选择的是 AND。这意味着两个条件必须同时满足。
笔者提示: 如果你的数据源是直接拉取的 API(如 Shopify 订单),数组通常在 `body.data` 或 `response` 字段里。这种情况下,n8n 会自动将数组拆分为多个 Item,你只需要针对单个 Item 配置 Filter 即可。
第三步:输出结果验证
连接一个 Set 节点或 No Operation 节点,查看输出。你会发现,原本的4条数据(Item),现在只剩下2条:ID 为 1 和 4 的订单。
这就是 Filter 节点的魔力——它像筛子一样,只让符合条件的数据流过,无效数据被自动拦截在 "False" 分支(如果你连接了 False 分支的话)。
避坑指南:处理数组数据的常见误区
在实战中,新手最容易在数组处理上栽跟头。以下是 N8N大学 总结的两个高频坑点:
1. 误以为 Filter 节点能自动遍历数组
很多同学把一个包含 100 条记录的数组直接丢进 Filter 节点,然后设置条件,结果发现流程卡住或没有输出。
解决方案: n8n 的处理逻辑是“一个 Item 一个 Item 地过”。如果你的输入是一个 JSON 数组(即一个 Item 包含整个数组),你需要先使用 Split Out 节点(在 n8n 核心节点中)或者 Spreadsheet File 节点的“Read as JSON”功能,将这个大数组“拆开”,变成多个独立的 Item。只有拆开后,Filter 节点才能逐条判断。
2. 混淆字段路径与数据类型
在配置 Filter 时,如果你的数据结构是 data.user.list,但你在 Filter 中错误地输入了 user.list,节点将找不到字段,导致判断失效。
解决方案: 善用 n8n 的 Mapping Helper(映射助手)。在 Filter 节点的字段输入框旁,点击那个小手图标,直接在左侧的输入数据面板中点击你要筛选的字段。n8n 会自动帮你生成正确的路径(如 $.orders[0].status),这能避免 90% 的路径错误。
FAQ 问答
Q1: Filter 节点支持正则表达式吗?
是的。在 Filter 节点的操作符中,选择 "String" 类型,你可以找到 "Regex" 选项。这对于筛选特定格式的文本(如邮箱、电话号码)非常有用。
Q2: 如果我想筛选“包含”某个关键词的数据,该怎么设置?
在 Filter 节点中,选择字符串操作符下的 Contains。例如,筛选描述中包含“紧急”二字的工单,操作符选 Contains,值填“紧急”即可。
Q3: Filter 节点过滤掉的数据去哪里了?
Filter 节点有两个输出分支:True 和 False。满足条件的数据走 True 分支,不满足的走 False 分支。如果你没有连接 False 分支,不满足条件的数据会被直接丢弃。建议连接一个 Log 节点到 False 分支,以便追踪被过滤的数据。
总结与资源
掌握 Filter 节点处理数组数据,是 n8n 进阶的必经之路。记住核心逻辑:先拆分(Split),后过滤(Filter)。通过精准的条件配置,你可以让自动化流程像精密的机器一样运转,只处理有效信息,大幅提升效率。
想了解更多 n8n 节点的硬核用法?欢迎持续关注 N8N大学 (n8ndx.com),这里有你最需要的实战干货。