0 투표

다시 보기

Remove

db.test.remove({ });

를 하면 전체가 지워집니다. 지우는 동작을 하기 전에는 항상 신중하게 판단하고 하세요. 책임은 자신에게 있습니다.

db.nanumtip.insert({ name: '나눔팁' });

첫 번째 인자가 지울 다큐먼트를 선택하는 부분입니다.

db.nanumtip.remove({ name: '나눔팁' }); // WriteResult({ 'nRemoved': 2 })

deleteOne, deleteMany

몽고DB 3.2 버전부터는 Remove 메소드를 대체하는 두 메소드가 추가되었습니다.

db.nanumtip.deleteOne({ name: '나눔팁' });

사용 방법은 거의 같습니다. 하지만 deleteOne은 매칭되는 첫 번째 다큐먼트만 지우고, deleteMany는 매칭되는 모든 다큐먼트를 지운다는 점에서 차이가 있습니다. remove 메소드를 세분화한 겁니다.

1 답변

0 투표

추가로 정리하면, 현재는 remove()보다 deleteOne / deleteMany 사용을 권장합니다.
(remove()는 예전 방식이라 드라이버/버전에 따라 경고가 뜨거나 권장되지 않습니다.)


✅ 가장 안전한 삭제 패턴 (실수 방지)

1) 먼저 조회로 대상 확인

db.nanumtip.find({ name: "나눔팁" });

2) 1개만 지울 때

db.nanumtip.deleteOne({ name: "나눔팁" });

3) 여러 개 지울 때

db.nanumtip.deleteMany({ name: "나눔팁" });

⚠️ 전체 삭제(컬렉션 비우기) 방법 비교

✅ 전체 문서만 비우기 (컬렉션/인덱스 유지)

db.nanumtip.deleteMany({});

✅ 컬렉션 자체 삭제 (인덱스 포함 전부 삭제)

db.nanumtip.drop();

“전체 삭제”가 목적이면 deleteMany({})와 drop()의 차이를 꼭 구분하세요.


실무 팁

  • 삭제 전에 limit(10) 같은 걸로 샘플 확인하기
  • 운영 환경에서는 백업/스냅샷 후 삭제
  • 대량 삭제 시에는 explain()으로 인덱스 타는지 확인(성능 이슈 방지)

정리하면:
조건 확인(find) → deleteOne/deleteMany 사용 → 전체 비우기 vs drop 구분
이렇게 가면 사고 확률이 확 줄어듭니다.

구로역 맛집 시흥동 맛집
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
...