📘 MongoDB 연습문제 모음 – 초급부터 고급까지 단계별로!
✅ 초급 레벨
(1) 📥 생성
문제: sports 컬렉션에 name: "Football", players: 11인 문서를 삽입하세요.
db.sports.insertOne({ name: "Football", players: 11 })
(2) 🔍 읽기
문제: products 컬렉션에서 price가 500 이하인 문서 찾기
db.products.find({ price: { $lte: 500 } })
문제: books 컬렉션에서 author가 "John Doe"인 문서 찾기
db.books.find({ author: "John Doe" })
(3) ✏️ 업데이트
문제: orders 컬렉션에서 status가 "Pending" → "Complete"
db.orders.updateMany({ status: "Pending" }, { $set: { status: "Complete" } })
문제: movies 컬렉션에서 genre가 "comedy"인 문서의 rating을 5로 변경
db.movies.updateMany({ genre: "comedy" }, { $set: { rating: 5 } })
(4) 🗑️ 삭제
문제: customers 컬렉션에서 age < 30인 문서 삭제
db.customers.deleteMany({ age: { $lt: 30 } })
🟡 중급 레벨
📥 생성
문제: myCollection에 복합 필드 문서 생성
db.myCollection.insertOne({ name: "Gadget", type: "Electronics", price: 300, ratings: [4, 5, 5] })
🔍 읽기
문제: employees에서 department: "Sales" & age >= 30
db.employees.find({ department: "Sales", age: { $gte: 30 } })
문제: salary >= 50000인 직원의 name, title만 표시
db.employees.find({ salary: { $gte: 50000 } }, { name: 1, title: 1 })
✏️ 업데이트
문제: products에서 stock 필드가 없는 문서에 stock: 10 추가
db.products.updateMany({ stock: { $exists: false } }, { $set: { stock: 10 } })
문제: vehicles에서 type: "car" → wheels: 4 필드 추가
db.vehicles.updateMany({ type: "car" }, { $set: { wheels: 4 } })
🗑️ 삭제
문제: orders에서 orderDate < 2023-01-01
db.orders.deleteMany({ orderDate: { $lt: new Date('2023-01-01') } })
문제: restaurants에서 rating < 3 삭제
db.restaurants.deleteMany({ rating: { $lt: 3 } })
🔴 고급 레벨
🔍 읽기
문제: customers에서 age >= 30, name으로 오름차순 정렬
db.customers.find({ age: { $gte: 30 } }).sort({ name: 1 })
문제: users에서 birthdate < 1990인 사용자 평균 age 계산 (Aggregation)
db.users.aggregate([
{ $match: { birthdate: { $lt: new Date('1990-01-01') } } },
{ $group: { _id: null, avgAge: { $avg: "$age" } } }
])
✏️ 업데이트
문제: employees에서 department: "HR"인 문서 → 부서명 및 타이틀 변경
db.employees.updateMany(
{ department: "HR" },
{ $set: { department: "Human Resources", title: "HR Manager" } }
)
문제: orders에서 delivered: false → deliveryDate: 현재 시간 추가
db.orders.updateMany(
{ delivered: false },
{ $set: { deliveryDate: new Date() } }
)
🗑️ 삭제
문제: products에서 lastModified가 30일 이상된 문서 삭제
db.products.deleteMany({
lastModified: {
$lt: new Date(new Date() - 30 * 24 * 60 * 60 * 1000)
}
})
문제: products에서 stock: 0 삭제
db.products.deleteMany({ stock: 0 })
🎯 활용 팁:
- MongoDB 쿼리는 JSON 형식의 명령어 구조이므로, 중괄호 안에 필드와 연산자를 조합하여 다양한 조건을 만들 수 있습니다.
- updateMany, find, deleteMany 등에서 조건 작성 능력을 키우면 실무에서도 큰 도움이 됩니다.
이 연습문제를 반복해서 풀다 보면 MongoDB의 CRUD 문법은 자연스럽게 체득될 거예요! 🙌
'Database' 카테고리의 다른 글
Chapter 8-46. NoSQL MongDB(6/6) MongoDB Aggregation 문법 (0) | 2025.03.27 |
---|---|
Chapter 8-45. NoSQL MongDB(5/6) MongoDB 비교문법 & 논리연산 (0) | 2025.03.27 |
Chapter 8-43. NoSQL MongDB(3/6) 쿼리기초 (0) | 2025.03.27 |
Chapter 8-41. NoSQL MongoDB(2/6) MongoDB의 기본 구조 (0) | 2025.03.26 |
Chapter 8-41. NoSQL MongoDB(1/6) MongoDB,Studio 3T 설치 (MongoDB GUI Tool) (0) | 2025.03.26 |