본문으로 건너뛰기
AIDevOps
  • Learn
  • Learning Paths
  • Practice
  • Open Source
  • Books
  • Engineering

    AI DevOpsAI 서비스 개발·운영 전체 지도LLMOpsLLM 배포·평가·관측실전 프로젝트AI Agent 프로젝트 실습

    Knowledge

    Docs기술 문서 모음Blog엔지니어링 아티클Plogger개발 기록 피드

    Validate

    Certification3단계 역량 인증 · 준비 중
AI Models
LlamaMistralGemmaDeepSeekQwen
💾 Database
DB 입문 & 로드맵공통 SQLOracleMySQLPostgreSQL|MongoDB벡터 DB
🤖 AI 실전 개발
AI 실전 입문 & 로드맵Hugging FaceLangChainLlamaIndexLLMOps|LangGraphMCPMulti-AgentAgent Evaluation
🧠 AI Core
AI 입문 & 로드맵ML FundamentalsLLM Fundamentals|Python AIC++|PyTorchTensorFlowJAX
🧠 AI Agent 개발
금융 AI AgentLLM API 서버주식 투자 AgentAIOps AI Agent교육 AI Agent코딩 AI Agent
🌱 Spring Cloud
Spring 입문 & 로드맵Spring Cloud GatewaySpring BootJava|Spring AISpring SecuritySpring BatchSpring JPA
🐳 DevOps
DevOps 입문 & 로드맵LinuxDockerCI/CD|Kubernetes 기본K8s 심화/실무PrometheusGrafana
🧱 인프라
인프라 입문 & 로드맵NginxRedis
☁️ 클라우드
클라우드 입문 & 로드맵AWSGCPAzureNCPCloudflare
🎨 Frontend
Frontend 입문 & 로드맵JavaScriptTypeScript|ReactNext.js|VueNuxt
📱 Mobile
Mobile 입문 & 로드맵KotlinAndroidFlutter
⚙️ Backend
Backend 입문 & 로드맵Python 기본FastAPIDjangoFlask|CGoGinNode.js
🧪 검증
k6JMeternGrinder
AIDevOps

Engineering AI. From Code to Production.
AI와 AI Agent를 개발하고 운영하기 위한 엔지니어링 학습 플랫폼

Learn

  • 전체 가이드
  • Learning Paths
  • Practice
  • Books

Resources

  • AI DevOps
  • LLMOps
  • 실전 프로젝트
  • Docs
  • Blog
  • Plogger
  • Open Source
  • Certification (준비 중)

Start Here

  • AI Core 로드맵
  • AI 실전 개발 로드맵
  • Spring Cloud 로드맵
  • DevOps 로드맵
  • 인프라 로드맵

 

  • 클라우드 로드맵
  • Frontend 로드맵
  • Mobile 로드맵
  • Backend 로드맵
  • Database 로드맵
© 2026 AI DevOps Korea. All rights reserved.
이용약관개인정보처리방침Sitemaptestforge.kr
  1. Home
  2. Learn
  3. Database
  4. MongoDB
가장 널리 쓰이는 NoSQL/빅데이터 문서형 데이터베이스

🍃 MongoDB 완전 가이드

Visitors

관계형 데이터베이스의 한계를 극복하는 NoSQL 대표 주자 MongoDB를 학습합니다. 스키마리스 문서형 모델(BSON), CRUD, Aggregation Pipeline을 이용한 복잡한 데이터 파이프라인 처리, 그리고 대용량 처리를 위한 Sharding/Replica Set 구성을 배웁니다.

  • Intermediate · 중급
  • 업데이트 2026.06.13
  • 약 6분 읽기
  • 9개 섹션
  • 예제 코드 5개
🍃
비정형/반정형 빅데이터 적재빠른 서비스 프로토타이핑고가용성 분산 환경 구축실시간 대용량 로그 수집

관련 프레임워크 & 개발환경

💾공통 SQL→🟢Node.js→🐍Python 기본→

목차

0 / 11
  1. 가이드 사용법
  2. 구조 다이어그램
  3. 문서 지향 모델과 BSON
  4. MongoDB CRUD 명령어
  5. 집계 파이프라인 (Aggregation)
  6. 인덱스 튜닝 & TTL
  7. Replica Set & Sharding
  8. MongoDB 역할 기반 접근 제어 (RBAC)
  9. MongoDB 설계
  10. 운영 기준
  11. 검증 전략
목차 11개 섹션
  1. 가이드 사용법
  2. 구조 다이어그램
  3. 문서 지향 모델과 BSON
  4. MongoDB CRUD 명령어
  5. 집계 파이프라인 (Aggregation)
  6. 인덱스 튜닝 & TTL
  7. Replica Set & Sharding
  8. MongoDB 역할 기반 접근 제어 (RBAC)
  9. MongoDB 설계
  10. 운영 기준
  11. 검증 전략

가이드 사용법

읽는 방향

MongoDB를 실무 흐름으로 이해하기

관계형 데이터베이스의 한계를 극복하는 NoSQL 대표 주자 MongoDB를 학습합니다. 스키마리스 문서형 모델(BSON), CRUD, Aggregation Pipeline을 이용한 복잡한 데이터 파이프라인 처리, 그리고 대용량 처리를 위한 Sharding/Replica Set 구성을 배웁니다. 이 가이드는 개념을 나열하기보다, 실제 프로젝트에서 판단해야 하는 순서대로 내용을 따라갈 수 있게 구성했습니다.

핵심 관점

데이터베이스

쿼리 문법과 함께 스키마 설계, 인덱스, 트랜잭션, 권한, 백업까지 운영 관점으로 봅니다.

비정형/반정형 빅데이터 적재빠른 서비스 프로토타이핑고가용성 분산 환경 구축실시간 대용량 로그 수집

구조 다이어그램

글로 읽은 내용을 머릿속에 오래 남기려면 먼저 흐름을 그림으로 잡는 편이 좋습니다. 아래 두 그림은 MongoDB를 학습할 때 계속 되돌아볼 수 있는 기준 지도입니다.

학습 흐름

다이어그램 렌더링 중…

아키텍처 관점

다이어그램 렌더링 중…

문서 지향 모델과 BSON

MongoDB를 처음 펼칠 때는 세부 명령보다 큰 그림이 먼저입니다. 이 섹션에서는 앞으로 배울 개념들이 어떤 문제를 풀기 위해 등장했는지부터 잡아봅니다.

MongoDB는 데이터를 테이블 행이 아닌 JSON의 이진 형태인 BSON(Binary JSON) 문서(Document) 구조로 컬렉션(Collection)에 저장합니다. 고정된 스키마가 없어 컬렉션 내의 문서들이 서로 다른 구조를 가질 수 있습니다.
document_example.jsonJSON
{
  "_id": "507f1f77bcf86cd799439011",
  "name": "Jane Doe",
  "age": 28,
  "skills": ["JavaScript", "Python"],
  "contact": {
    "email": "jane@example.com",
    "phone": "010-1234-5678"
  },
  "created_at": "2026-06-13T02:00:00Z"
}

MongoDB CRUD 명령어

여기서는 MongoDB CRUD 명령어을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

SQL의 SELECT, INSERT, UPDATE, DELETE 구문은 MongoDB 셸 명령어를 통해 컬렉션 객체의 메서드 호출 방식으로 매핑됩니다.
crud_operations.jsJAVASCRIPT
// 1. Insert
db.users.insertOne({ name: "Alice", age: 30, active: true });

// 2. Read (나이가 25세 이상인 활성 사용자 조회)
db.users.find({ age: { $gte: 25 }, active: true });

// 3. Update (이름이 Alice인 사용자의 나이를 1 증가)
db.users.updateOne({ name: "Alice" }, { $inc: { age: 1 } });

// 4. Delete
db.users.deleteOne({ name: "Alice" });

집계 파이프라인 (Aggregation)

여기서는 집계 파이프라인 (Aggregation)을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

MongoDB의 Aggregation 프레임워크는 파이프라인(Pipeline) 흐름에 따라 데이터를 단계별로 변환, 필터링, 그룹화하여 복잡한 통계 집계를 수행합니다. SQL의 GROUP BY와 HAVING보다 자유롭고 강력합니다.
aggregation.jsJAVASCRIPT
db.orders.aggregate([
  // 1단계: 완료(completed) 상태의 주문 필터링
  { $match: { status: "completed" } },
  
  // 2단계: 고객(customerId) 별로 그룹화하여 총 금액 합산
  { $group: { _id: "$customerId", totalAmount: { $sum: "$price" }, count: { $sum: 1 } } },
  
  // 3단계: 총 주문금액이 100 이상인 그룹만 필터링
  { $match: { totalAmount: { $gte: 100 } } },
  
  // 4단계: 총 주문금액 내림차순 정렬
  { $sort: { totalAmount: -1 } }
]);

인덱스 튜닝 & TTL

여기서는 인덱스 튜닝 & TTL을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

인덱스는 읽기 쿼리를 빠르게 처리하는 핵심이며, MongoDB는 복합(Compound) 인덱스뿐만 아니라 일정 시간이 지나면 자동으로 데이터를 삭제하는 TTL(Time-to-Live) 인덱스 등 고유한 인덱스 기능을 제공합니다.
indexing.jsJAVASCRIPT
// 1. 단일 인덱스 생성
db.users.createIndex({ age: 1 });

// 2. 복합 인덱스 생성
db.users.createIndex({ active: 1, age: -1 });

// 3. TTL 인덱스 (로그 컬렉션에 30일(2592000초) 후 자동 삭제 설정)
db.logs.createIndex({ created_at: 1 }, { expireAfterSeconds: 2592000 });

// 4. 실행 계획 확인
db.users.find({ age: 30 }).explain("executionStats");

Tip

복합 인덱스 설계 시 equality(동등 비교) 필드를 가장 앞쪽에, 그 다음 sort(정렬),마지막으로 range(범위 비교) 필드를 놓는 ESR 규칙을 따르는 것이 좋습니다.

Replica Set & Sharding

Replica Set & Sharding은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.

대용량 웹 서비스 아키텍처에서는 장애 극복(Failover)을 위한 Replica Set과, 무제한 수평 확장을 위한 샤딩(Sharding) 분산 아키텍처를 도입하여 대용량 트래픽을 감당합니다.
아키텍처 모델구조 특징주요 목적
Replica Set (복제 셋)Primary 노드(1개) + Secondary 노드(여러 개)고가용성(HA), 데이터 이중화, Primary 다운 시 자동 Failover
Sharding (샤딩 분산)Mongos 라우터, Config 서버, Shard 노드들수평적 쓰기/읽기 분산, 테라바이트급 빅데이터 파티셔닝 적재

MongoDB 역할 기반 접근 제어 (RBAC)

여기서는 MongoDB 역할 기반 접근 제어 (RBAC)을 실제 코드와 함께 확인합니다. 예제를 그대로 따라 하기보다, 입력과 출력, 그리고 바뀌기 쉬운 부분이 어디인지 보면서 읽어보세요.

MongoDB는 사용자가 데이터베이스 연결 시 인증(Authentication) 단계를 거친 후, 해당 사용자에게 매핑된 역할(Roles)에 따라 허용되는 작업(Actions)과 자원(Resources)의 스코프를 제한하는 역할 기반 보안(RBAC) 방식을 제공합니다.
mongo_rbac.jsJAVASCRIPT
// 1. 관리자 데이터베이스(admin)로 전환 후 읽기/쓰기 권한을 제약한 전용 사용자 생성
use admin;

db.createUser({
  user: "app_service_user",
  pwd: "securePassword123",
  roles: [
    // mydb 데이터베이스에 대해 읽기 및 쓰기 권한 부여
    { role: "readWrite", db: "mydb" },
    // mydb 데이터베이스의 인덱스 생성 및 프로파일러 관리 권한 부여
    { role: "dbAdmin", db: "mydb" }
  ]
});

// 2. MongoDB의 대표적인 내장 역할(Built-in Roles)
// - read: 데이터 조회 권한
// - readWrite: 데이터 조회 및 추가/수정/삭제 권한
// - dbAdmin: 스키마 정보 확인, 인덱스 생성, 통계 분석 등 관리 권한
// - userAdmin: 사용자 생성, 권한 부여/회수 권한 (보안 위험 높음)
// - dbOwner: readWrite, dbAdmin, userAdmin의 모든 권한 포함
// - root: admin DB 전용, 클러스터 전체 및 모든 데이터베이스 통제 권한

// 3. 내 권한 상태 조회
db.runCommand({ connectionStatus: 1 });

Tip

  • MongoDB는 기본적으로 인증이 비활성화(noauth)되어 있으므로, mongod.conf 설정 파일에서 security.authorization: enabled를 활성화하고 서버를 재시작해야 계정 보안이 적용됩니다.
  • 애플리케이션 접속용 계정은 절대 root나 dbOwner 역할을 피하고, 특정 DB에 국한된 readWrite 역할만 부여하는 것이 안전합니다.

MongoDB 실무 설계

MongoDB 실무 설계은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.

MongoDB 설계는 임베디드 문서 설계와 더불어 클러스터 및 데이터베이스 단위의 RBAC 역할 정의가 중심입니다. admin 데이터베이스와 일반 서비스 데이터베이스의 사용자 및 권한 경계를 격리해야 합니다.
결정 지점확인 질문실무 기준
경계MongoDB 코드에서 바뀌기 쉬운 부분은 어디인가?입출력, 설정, 외부 연동, 핵심 규칙을 분리합니다.
상태상태가 어디서 생성되고 어디서 사라지는가?상태 소유자와 수명 주기를 코드로 드러냅니다.
장애실패했을 때 호출자는 무엇을 받는가?timeout, fallback, error contract를 먼저 정합니다.

MongoDB 운영 기준

이 섹션은 MongoDB 운영 기준을 실무 관점에서 정리합니다. 개념을 외우기보다, 어떤 상황에서 이 기준을 꺼내 쓸지에 초점을 맞춰보세요.

WiredTiger 엔진 캐시 모니터링, Shard 노드 로드 밸런싱과 함께 mongod.conf 보안 인증(authorization: enabled)이 실서버에 반드시 켜져 있도록 강제하는 형상 관리를 시행해야 합니다.

Tip

  • WiredTiger cache dirty/eviction 비율
  • security.authorization 활성화 여부 검사
  • connectionStatus 기반 유효 역할 검증
  • Index가 RAM 크기에 수용되는지 여부

MongoDB 검증 전략

MongoDB 검증 전략은 선택지가 갈리는 지점입니다. 표를 기준으로 각 방법의 쓰임새와 운영상의 차이를 비교해두면 이후 판단이 훨씬 쉬워집니다.

Aggregation Pipeline 최적화 검사 외에 connectionStatus 셸 명령을 실행하여 현재 접속 세션의 roles 배열에 불필요한 dbOwner나 root 권한이 누락/포함되었는지 검증해야 합니다.
품질 축검증 방법완료 기준
정확성정상/실패 케이스를 자동화합니다.핵심 시나리오가 재현 가능하게 통과합니다.
회귀 방지버그 수정 시 동일 케이스를 테스트로 남깁니다.같은 장애가 다시 배포되지 않습니다.
운영성로그, 메트릭, 알림을 확인합니다.문제가 생겼을 때 원인 추적 경로가 있습니다.
← 이전 가이드PostgreSQL다음 가이드 →벡터 DB