JSON 列表重组:Aggregate 节点将多条 Items 合并为一个数组 (List)

2026-01-23 48 0

别再一条条处理数据了,学会这一招,效率提升 10 倍

笔者在 N8N 大学后台收到了很多新手的困惑:为什么我从数据库或 API 拿到的数据是一条一条的,但我需要把它们打包成一个数组(List)发给下一个接口?比如,把 100 个用户 ID 拼成一个数组传给批量处理接口。

JSON 列表重组:Aggregate 节点将多条 Items 合并为一个数组 (List)

如果你还在用复杂的 JavaScript 代码节点或者傻傻地手动循环,那你一定要看完这篇干货。今天,N8N 大学就带你彻底搞懂 Aggregate 节点,这可是数据聚合的“核武器”。

Aggregate 节点到底是个啥?

简单来说,Aggregate 节点就是一个“打包工”。它的核心任务只有一个:把散落的“砖头”(Items)按照你的要求,砌成一堵“墙”(一个数组对象)。

在 n8n 的世界里,数据流是由一个个 Item 组成的。如果你的上游节点输出了 10 个 Item,而你的下游接口只需要接受 1 个包含这 10 条数据的 Item,你就必须使用 Aggregate 节点来进行“聚合”。

实战演练:三步搞定数据合并

光说不练假把式。我们模拟一个场景:你抓取了商品列表,每条数据是一个商品,现在需要把它们合并成一个 `products` 数组传给库存系统。

第一步:准备测试数据

为了方便理解,我们使用 Set 节点手动模拟生成 3 条数据。如果你是连接的真实数据库或 HTTP 请求,可以跳过这一步。

  • 添加 Set 节点,Mode 选择 "Manual"。
  • 在 Inputs 里添加 3 条数据,每条数据包含 `id` 和 `name`。

第二步:配置 Aggregate 节点

这是最核心的一步。添加 Aggregate 节点,你会看到几个关键参数,千万别填错:

  • Aggregate Operation (聚合操作):这里必须选择 Aggregate to a list。这是 n8n 给你的最直白的选项。
  • Options -> Keep Only Set Fields (仅保留设置字段):默认是关闭的。如果你勾选了它,n8n 会丢弃掉原始数据里其他的元数据,只保留你指定的字段。通常建议保持默认或根据需要设置。

第三步:定义输出字段 (Field to Aggregate)

这是最容易卡住新手的地方。在 Aggregate 节点的 "Fields to Aggregate" 区域:

  1. Name:输入你想要的数组名称,比如 product_list(注意:不要加 $ 符号)。
  2. Include:选择 Keep,或者直接输入 json。这意味着我们要把整个 JSON 对象都塞进去。

运行一下,你会发现原本 3 个 Item 变成了 1 个 Item,里面包含了一个名为 product_list 的数组,数组里就是那 3 条数据。

避坑指南:90% 的人都在参数上翻车

笔者提示: Aggregate 节点没有复杂的逻辑,但参数名称非常容易让人误解,特别是 "Field to Aggregate" 这一块。

很多同学在这里会填错,导致输出的不是列表而是一堆乱码。请记住:

  • Name 列:是你最终生成的 JSON 数组的键名(Key)
  • Include 列:决定了你要把原始 Item 的什么内容放进这个数组里。

如果你只想保留某个字段(比如只保留 ID),你可以在 Include 里填 `id` 或者使用 JSON 表达式 {{ $json.id }}。如果想保留整个对象,填 json 即可。

为什么要用 Aggregate,而不是写代码?

有些技术背景的同学可能会问:我用 JavaScript 代码节点写个 return [{json: items}] 不就完事了吗?为什么要多此一举?

原因有三:

  1. 可视化清晰:在复杂的流程中,看到 Aggregate 节点,你就知道这里发生了数据结构的形态变化,维护性极强。
  2. 容错率高:手写代码容易出现语法错误、数据类型转换错误,而 n8n 的原生节点经过了大量验证。
  3. 非技术人员友好:对于不懂代码的业务人员,配置几个下拉框比看懂一段 JS 代码要容易得多。

FAQ:关于 Aggregate 的常见问题

1. Aggregate 后的数据,后续节点怎么使用?

聚合后的数据变成了一个 Item,后续节点(如 HTTP Request)会接收这个 Item。如果你的 HTTP Request Body 需要引用这个数组,可以使用表达式 {{ $json.product_list }}(假设你的字段名是 product_list)。

2. 我想按条件聚合怎么办?

Aggregate 节点本身不支持复杂的分组聚合(像 SQL 的 Group By)。如果你需要按用户 ID 分组把订单合并,你需要先用 Sort 节点排序,然后使用 Split Out 或者 Code 节点来实现更复杂的逻辑。但在简单的“全量打包”场景下,Aggregate 是最优解。

3. 数据量很大(比如几千条)会有性能问题吗?

n8n 处理几千条数据通常没问题。但如果你的数据量达到了几万甚至几十万,Aggregate 节点可能会占用大量内存。这时候建议分批次处理,或者在源头(如数据库查询)就限制数量。

总结与资源

Aggregate 节点是 n8n 数据处理流中的“变形金刚”,它解决了“多对一”的数据结构转换问题。掌握了它,你就掌握了数据聚合的主动权。

在 N8N 大学,我们不仅教你点对点的操作,更希望你能理解数据流转的底层逻辑。如果你在实操中遇到了其他数据结构的难题,欢迎在评论区留言,笔者会挑选高频问题进行深度拆解。

相关文章

n8n Wait节点在数据同步中的延迟控制实战
n8n Wait节点免费版:我能用它实现定时任务吗?
n8n Error Handling节点:当自动化流程“翻车”时,如何让它自动“扶起来”?
n8n Error Handling节点报错常见问题解决
当n8n流程意外中断,Error Handling节点如何配置才能优雅降级?
n8n Error Handling节点和Try/Catch节点,到底该怎么选?

发布评论