N8N基础节点 Filter过滤节点:精准筛选数据
发表时间:2025-11-27
在自动化工作流中,数据处理的效率至关重要。你是否曾遇到这样的场景:从数据源获取大量信息,但其中大部分是已经处理过的旧数据?这不仅浪费资源,还可能导致数据重复和处理效率低下。今天,我们将深入探讨 n8n 中的“过滤器”节点,它能帮助你精准筛选所需数据,告别冗余。
什么是过滤器节点?
“过滤器”(Filter)节点,顾名思义,是 n8n 中用于根据特定条件筛选数据的强大工具。它接收上游节点输出的数据,然后根据你设置的条件,只保留符合要求的数据项,将不符合的项丢弃。这在处理动态数据流时尤为实用,例如从 RSS 订阅源、API 接口或数据库中获取数据时,仅保留最新或最相关的信息。
场景示例:筛选每日更新的 RSS 订阅
假设我们有一个 RSS 订阅源(如 producthunt.com/feed),每天会发布数十条新内容。如果我们的工作流每天运行一次,将这些内容存入数据库或表格,我们不希望重复存储已经存在的数据。此时,过滤器节点就能大显身手,帮助我们只保留“昨天之后”发布的最新内容。
1. 获取原始数据
首先,我们使用“RSS Read”节点从订阅源获取数据。执行后,你可能会看到输出包含了 50 甚至更多的数据项,每项都包含 title(标题)、link(链接)、pubDate(发布日期)、author(作者)和 content(内容)等字段。
2. 添加过滤器节点
接下来,将“过滤器”节点连接到“RSS Read”节点之后。点击过滤器节点,进入其配置界面。
3. 配置过滤条件
在“Parameters”(参数)选项卡中,我们将设置筛选条件:
-
选择数据字段: 在“Conditions”(条件)区域,点击输入框,将 RSS Read 节点输出中的
pubDate字段拖拽过来。n8n 会智能识别这是一个日期时间类型的数据。 -
选择比较操作符: 对于日期时间类型,我们可以选择多种操作符,例如“is after”(在之后)、“is before”(在之前)、“is after or equal to”(在之后或等于)等。在此场景中,我们选择“is after or equal to”,表示要保留发布日期在某个时间点之后或当天的数据。
-
设置动态日期: 为了实现每天自动筛选出“昨天”之后的数据,我们可以利用 n8n 的内置表达式。在第二个输入框中,输入以下表达式:
{{ $now.minus({ days: 1 }).format('yyyy-MM-dd') }}这个表达式的含义是:
$now:获取当前时间。.minus({ days: 1 }):将当前时间减去 1 天,得到昨天的日期。.format('yyyy-MM-dd'):将日期格式化为“年-月-日”的字符串,以便与pubDate进行比较。
💡 小贴士: 如果你对 n8n 的表达式语法不熟悉,可以借助 AI 工具(如 ChatGPT)来帮助生成和理解这些表达式。
4. 查看筛选结果
配置完成后,点击“Execute step”(执行步骤)来测试过滤器。在输出区域,你会看到数据被分成了两部分:
- Kept (保留项): 这些是符合条件的数据项。例如,如果今天(11月27日)运行,表达式会计算出11月26日,过滤器将保留11月26日及之后发布的所有内容。
- Discarded (丢弃项): 这些是不符合条件的数据项,即11月26日之前发布的内容。
通过这种方式,原本的 50 条数据可能只会保留 6 条最新的数据,大大减少了后续处理的数据量。
5. 其他数据类型和操作符
除了日期时间,过滤器节点还支持多种数据类型及其对应的操作符:
- 字符串 (String):
contains(包含)starts with(以...开头)is empty(为空)is equal to(等于)- ...
- 数字 (Number):
is greater than(大于)is less than(小于)is equal to(等于)- ...
- 布尔值 (Boolean):
is true(为真)is false(为假)is equal to(等于)- ...
- 数组 (Array) 和 对象 (Object): 通常用于检查是否存在、是否为空、包含特定元素或属性等。
总结
过滤器节点是 n8n 工作流中不可或缺的组件,它赋予你对数据流的精细控制能力。通过灵活运用各种数据类型和操作符,你可以轻松实现:
- 防止数据冗余: 仅处理最新的或未曾处理过的数据。
- 提高效率: 减少处理不必要数据的时间和计算资源。
- 定制化数据: 根据业务需求只提取最相关的信息。
掌握过滤器节点的使用,将极大地提升你的 n8n 工作流的智能化和效率。快去尝试将其应用到你的自动化任务中吧!