MongoDB insertOne() insertMany()
2026년 8월 28일
MongoDB insertOne() insertMany()
새 문서를 넣는다. 이미 있으면 갱신하지 않는다 — 그건 updateOne이나 upsert의 일이다.
JavaScript
셸
JavaScript
파이썬
Python
_id는 자동으로 붙는다
Mermaid스크롤로 확대 · 드래그로 이동
_id를 직접 줄 수도 있다. 의미 있는 키가 이미 있으면 그걸 _id로 쓰면 인덱스 하나를 아낀다 (MongoDB 문서 모델과 BSON).
ordered — 중간에 실패하면
Python
| 옵션 | 동작 |
|---|---|
ordered=True (기본) | 순서대로 넣다가 하나 실패하면 거기서 중단. 뒤는 안 넣음 |
ordered=False | 실패한 것만 건너뛰고 나머지는 전부 시도 |
TEXT
로그·trace처럼 일부가 중복이어도 나머지는 들어가야 하는 경우 ordered=False가 맞다. 병렬 처리라 더 빠르기도 하다.
부분 실패는 예외로 온다
Python
예외가 났다고 아무것도 안 들어간 게 아니다. ordered=False에서는 일부가 이미 저장돼 있다 (MongoDB 예외 처리).
왜 우리 코드에는 insert가 거의 없나
시딩·원장은 전부 upsert 계열을 쓴다. insert는 두 번 돌리면 중복이 되어 멱등하지 않기 때문이다. insert가 맞는 자리는 한 번만 일어나는 사건 기록이다.
한 줄 정리
insert는 "새로 넣기"뿐이다. 재실행 가능성이 있으면 upsert를, 대량 삽입에는 ordered=False를 쓴다.
관련
- upsert
- MongoDB updateOne()
- MongoDB bulkWrite()
- MongoDB 쓰기 결과 객체
- MongoDB 예외 처리
- 유니크 인덱스
- MongoDB CRUD 메서드