n8n 반복과 Merge: 배치 처리·ID 기준 병합 실습

n8n 자동화읽기 약 5분

2026년 9월 13일 내용 개정. 공식 문서와 대조해 설명과 예제를 정리했습니다. 설치 버전에 따라 화면과 옵션 이름은 달라질 수 있습니다.

여러 신청자를 처리할 때는 반복과 병합을 나눠 생각해야 합니다. 반복은 처리할 묶음을 조절하는 일이고, 병합은 서로 다른 데이터의 관계를 맞추는 일입니다. Loop Over Items를 넣었다고 요청이 자동으로 느려지는 것도, Merge를 넣었다고 사람별 데이터가 정확히 연결되는 것도 아닙니다.

이 글에서 확인할 내용: Loop Over Items의 반복 경로와 Merge의 ID 기준 병합을 서로 다른 실습으로 확인합니다. 대표 사진과 본문 사진은 작업 환경 참고용입니다. 대표 사진: Radowan Nakif Rehan / Unsplash.

여러 화면을 사용하며 개발 작업을 하는 사람
여러 화면을 사용하며 개발 작업을 하는 사람. 자동화·개발 작업 환경을 보여주는 참고 사진이며 실제 n8n 실행 화면은 아닙니다. 사진: Mohammad Rahmani / Unsplash

1. 먼저 반복 노드가 필요한지 판단

대부분의 n8n 노드는 여러 입력 아이템을 처리합니다. 한 건씩 보내고 기다려야 하거나 노드 동작상 별도 반복이 필요한 때 Loop Over Items를 사용합니다. 이 노드는 이전 자료에서 Split In Batches라는 이름으로 등장합니다. 공식 Loop Over Items 안내를 기준으로 출력 라벨을 확인하세요.

2. 3개 아이템을 한 건씩 처리해 보기

Manual Trigger 뒤의 Code 노드에서 JavaScript / Run Once for All Items를 선택하고 다음 데이터를 만듭니다.

return [1, 2, 3].map(id => ({ json: { id } }));
  • Code 뒤에 Loop Over Items를 연결하고 Batch Size를 1로 설정합니다.
  • loop 출력에 Edit Fields를 연결해 Boolean 필드 processed에 true를 넣습니다. 기존 id는 유지합니다.
  • Edit Fields의 출력을 Loop Over Items 입력으로 다시 연결합니다.
  • done 출력 뒤에는 완료 결과를 확인할 노드를 연결합니다.
  • 실행 후 done 쪽에 id 1·2·3과 processed: true가 모였는지 확인합니다.

loop는 현재 묶음, done은 반복 종료 후 결과를 확인하는 경로입니다. 이 실습에서는 별도 Merge가 필요하지 않습니다. 일정 간격을 두려면 작업 뒤에 Wait를 넣고 돌아오는 선을 연결합니다. Batch Size가 1이어도 대기 설정이 없으면 요청이 빠르게 연속 실행될 수 있습니다.

3. ID 기준 병합용 입력 만들기

이번에는 새 워크플로우에서 Manual Trigger를 두 Code 노드로 분기합니다. 두 노드는 JavaScript / Run Once for All Items를 사용합니다. 첫 노드 이름은 Students, 두 번째는 Payments로 지정합니다.

// Students
return [
  { json: { id: "A101", name: "민준" } },
  { json: { id: "A102", name: "지수" } }
];
// Payments
return [
  { json: { id: "A102", paid: true } },
  { json: { id: "A101", paid: false } }
];

Payments의 순서가 반대인 것이 실습의 핵심입니다. Students를 Merge의 Input 1, Payments를 Input 2에 연결합니다. Mode는 Combine, Combine By는 Matching Fields, 양쪽 Fields to Match는 id, Output Type은 Keep Matches로 설정합니다.

idnamepaid
A101민준false
A102지수true

Append는 입력 목록을 이어 붙이므로 이 예제에서는 4개 아이템이 됩니다. Position은 순번끼리 결합하므로 순서가 다른 자료를 잘못 연결할 수 있습니다. ID 일치로 합칠 때는 Matching Fields를 사용합니다. 모드와 출력 옵션은 Merge 공식 설명에서 확인하세요.

노트북으로 코드를 작성하는 개발자
노트북으로 코드를 작성하는 개발자. 자동화·개발 작업 환경을 보여주는 참고 사진이며 실제 n8n 실행 화면은 아닙니다. 사진: Danial Igdery / Unsplash

4. 누락·중복으로 병합 결과 검증

  • Payments에서 A102를 삭제하면 Keep Matches 결과는 A101만 남습니다.
  • 미결제 내역이 없는 신청자도 남기려면 Enrich Input 1 같은 출력 정책을 검토합니다.
  • Payments에 A101이 여러 번 있으면 여러 매칭으로 출력 수가 늘어날 수 있습니다.
  • id가 숫자인지 문자열인지 양쪽 형식을 맞춥니다.
  • 같은 이름의 필드가 양쪽에 있으면 어느 입력을 우선하는지 충돌 설정을 확인합니다.

실제 명단에서는 동명이인이 있으므로 name만 병합 키로 쓰지 않는 편이 좋습니다. 병합 후 행 수만 보지 말고 신청번호별 금액이나 상태가 맞는지 표본을 확인하세요. 이 예제의 paid는 가상 학습 값이며 실제 결제 시스템을 조회하지 않습니다.

두 모니터와 키보드를 사용하는 개발 환경
두 모니터와 키보드를 사용하는 개발 환경. 자동화·개발 작업 환경을 보여주는 참고 사진이며 실제 n8n 실행 화면은 아닙니다. 사진: Fotis Fotopoulos / Unsplash

반복이 끝나지 않을 때

돌아오는 선이 잘못 연결됐는지, Reset 옵션을 매번 켜고 있는지 확인합니다. 페이지네이션처럼 Reset이 필요한 흐름에는 종료 조건과 최대 반복 횟수가 필요합니다. 빈 결과 분기 뒤에서 되돌아오는 경로가 끊기면 반복이 예상과 다르게 멈출 수 있으므로 적은 데이터로 먼저 확인합니다.

함께 읽을 실습

n8n 표현식: $json·item·first·all 참조 차이와 예제
n8n 오류 해결: 값 없음·타입 불일치·아이템 연결 디버깅