MongoDB 기초

MongoDB는 가장 인기 있는 오픈소스 NoSQL(Not only SQL) 데이터베이스입니다. JSON과 유사한 BSON 형식의 문서를 사용하여 데이터를 저장합니다.

개요

MongoDB는 기존의 관계형 데이터베이스(RDBMS)와 달리, 행과 열로 구성된 테이블 대신 유연한 구조의 문서(Document)를 사용합니다. 이는 데이터 모델링의 제약이 적어 빠르게 개발할 수 있으며, 스키마(Schema) 변경이 자유롭습니다. 대규모 분산 환경에 적합하도록 설계되어 있어, 빅데이터 및 실시간 웹 서비스에 많이 활용됩니다.

참고

MongoDB는 Node.js와 함께 ME(A)N 스택(MongoDB, Express.js, Angular/React, Node.js)의 핵심 구성 요소로 사용됩니다.

핵심 개념

MongoDB의 데이터 구조와 용어는 관계형 데이터베이스와 다릅니다.

관계형 DB 용어 MongoDB 용어 설명
데이터베이스 데이터베이스 문서들을 저장하는 논리적인 컨테이너입니다.
테이블 컬렉션 (Collection) 여러 개의 문서들을 모아놓은 집합입니다.
행 (Row) 문서 (Document) JSON과 유사한 형태의 데이터 레코드입니다.
열 (Column) 필드 (Field) 문서 내의 키-값 쌍(Key-Value Pair)입니다.

기본 문법

MongoDB는 MongoDB Shell이나 다양한 드라이버를 통해 명령어를 실행합니다. 기본적인 CRUD(Create, Read, Update, Delete) 작업은 다음과 같습니다.

MongoDB Shell
// 데이터베이스 선택 (없으면 생성)
use mydatabase

// 새로운 문서 삽입 (Create)
db.users.insertOne({ name: '김철수', age: 30, status: 'active' })

// 모든 문서 조회 (Read)
db.users.find()

// 특정 조건의 문서 조회
db.users.find({ age: { $gt: 25 } })

사용 예제

users 컬렉션에 문서를 삽입하고 조회, 수정, 삭제하는 예제입니다.

MongoDB Shell
// 여러 문서 삽입
db.users.insertMany([
  { name: '박영희', age: 28, city: '서울' },
  { name: '김민준', age: 32, city: '부산' }
]);

// 문서 수정 (업데이트)
db.users.updateOne(
  { name: '박영희' },
  { $set: { status: 'offline' } }
);

// 문서 삭제
db.users.deleteOne({ name: '김민준' });

// 최종 결과 확인
db.users.find();

주의사항 및 팁

  • MongoDB Compass와 같은 GUI 도구를 사용하면 데이터베이스를 시각적으로 관리할 수 있어 편리합니다.
  • 스키마가 유연하다는 장점 때문에 데이터의 일관성을 유지하기 위한 설계가 중요합니다.
  • 관계형 데이터베이스처럼 JOIN 기능이 없으므로, 데이터 모델링 단계에서 애플리케이션의 쿼리 패턴을 고려해야 합니다.
주의

MongoDB는 스키마가 없는 자유로운 구조가 장점이지만, 이는 동시에 데이터의 무결성을 보장하기 어렵다는 단점이 될 수 있습니다. 따라서 애플리케이션 레벨에서 데이터 유효성 검사를 철저히 해야 합니다.