Chapter 8-44. NoSQL MongDB(4/6) 연습문제

2025. 3. 27. 14:01·Database

 

📘 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
'Database' 카테고리의 다른 글
  • Chapter 8-46. NoSQL MongDB(6/6) MongoDB Aggregation 문법
  • Chapter 8-45. NoSQL MongDB(5/6) MongoDB 비교문법 & 논리연산
  • Chapter 8-43. NoSQL MongDB(3/6) 쿼리기초
  • Chapter 8-41. NoSQL MongoDB(2/6) MongoDB의 기본 구조
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (787)
      • Python (32)
      • 프로젝트 (110)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    chatgpterror
    뷔
    hotcoffeecase
    chinanightlife
    youngprofessionals
    urbantrends
    lawsuitculture
    btsdischarge
    newpoliticalparty
    btscomeback
    global politics
    self-growth
    btsreunion
    titaniumcase
    college reunions
    gpterror
    americaparty
    RM
    smartphonedurability
    homebartrend
    remittance
    livebroadcast
    bts
    life reflection
    btsjungkook
    basalcellcarcinoma
    americanlaw
    trumpmuskclash
    classaction
    travel ban
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 8-44. NoSQL MongDB(4/6) 연습문제
상단으로

티스토리툴바