MongoDB는 2009년 출시된 가장 인기 있는 문서 지향 NoSQL 데이터베이스다. JSON과 유사한 BSON 형식으로 데이터를 저장하며, 스키마가 없어 유연한 데이터 구조를 지원한다.
핵심 개념
| MongoDB | 관계형 DB |
|---|
| 데이터베이스 | 데이터베이스 |
| 컬렉션 | 테이블 |
| 문서(Document) | 행(Row) |
| 필드 | 열(Column) |
| BSON | SQL 레코드 |
기본 CRUD
javascript
// 연결
const { MongoClient } = require('mongodb');
const client = new MongoClient('mongodb://localhost:27017');
const db = client.db('shop');
const col = db.collection('products');
// 생성
await col.insertOne({ name: 'Apple', price: 1500, stock: 100 });
await col.insertMany([
{ name: 'Banana', price: 800 },
{ name: 'Cherry', price: 3000 }
]);
// 조회
const product = await col.findOne({ name: 'Apple' });
const cheap = await col.find({ price: { $lt: 2000 } }).toArray();
// 수정
await col.updateOne({ name: 'Apple' }, { $set: { price: 1600 } });
await col.updateMany({}, { $inc: { stock: -1 } }); // 전체 재고 -1
// 삭제
await col.deleteOne({ stock: { $lte: 0 } });
집계 파이프라인
javascript
const result = await col.aggregate([
{ $match: { price: { $gt: 1000 } } },
{ $group: { _id: '$category', avgPrice: { $avg: '$price' } } },
{ $sort: { avgPrice: -1 } }
]).toArray();
MongoDB vs 관계형 DB
| 항목 | MongoDB | MySQL/PostgreSQL |
|---|
| 스키마 | 유연 | 고정 |
| 조인 | 복잡(Lookup) | 네이티브 지원 |
| 트랜잭션 | 4.0+ 지원 | 완전 지원 |
| 수평 확장 | 용이 | 어려움 |
| 적합한 경우 | 비정형 데이터 | 정형 데이터 |
관련 개념
- •NoSQL — MongoDB가 속하는 분류
- •해시맵 — BSON 문서의 키-값 구조
- •Redis — 다른 NoSQL 데이터베이스
참고문헌
- •MongoDB 공식 문서: mongodb.com/docs