Chapter 8-45. NoSQL MongDB(5/6) MongoDB 비교문법 & 논리연산

2025. 3. 27. 14:08·Database

 

📘 MongoDB 비교 연산자 & 논리 연산자 완전 정복 가이드

NoSQL 데이터베이스인 MongoDB에서는 데이터를 효율적으로 검색하기 위해 다양한 비교 연산자와 논리 연산자를 제공합니다. 이 가이드는 MongoDB의 조건문을 이해하고 실전에서 활용할 수 있도록 구성되어 있습니다.


🔎 비교 연산자 정리

연산자 설명 예시 쿼리

$eq 지정된 값과 같은 경우 db.collection.find({ age: { $eq: 30 } })
$gt 지정된 값보다 큰 경우 db.collection.find({ age: { $gt: 30 } })
$gte 지정된 값보다 크거나 같은 경우 db.collection.find({ age: { $gte: 30 } })
$lt 지정된 값보다 작은 경우 db.collection.find({ age: { $lt: 30 } })
$lte 지정된 값보다 작거나 같은 경우 db.collection.find({ age: { $lte: 30 } })
$ne 지정된 값과 다른 경우 db.collection.find({ age: { $ne: 30 } })
$in 배열 내 값과 일치하는 경우 db.collection.find({ age: { $in: [25, 30, 35] } })
$nin 배열 내 값이 아닌 경우 db.collection.find({ age: { $nin: [25, 30, 35] } })

📌 Tip: $in, $nin은 배열 조건으로 여러 값을 한 번에 비교할 수 있어 매우 유용합니다!


🧠 논리 연산자 정리

연산자 설명 예시 쿼리

$and 모든 조건이 참인 문서 검색 db.collection.find({ $and: [{ age: { $gt: 20 } }, { age: { $lt: 30 } }] })
$or 하나 이상의 조건이 참이면 검색 db.collection.find({ $or: [{ age: 20 }, { name: "Alice" }] })
$not 조건의 반대에 해당되는 문서 검색 db.collection.find({ age: { $not: { $gt: 30 } } })
$nor 모든 조건이 거짓인 문서 검색 db.collection.find({ $nor: [{ age: 20 }, { name: "Alice" }] })

💡 논리 연산자는 복잡한 조건 조합을 만들 때 핵심입니다!


🧪 실전 연습문제 – MongoDB 쿼리 실습

다음은 실제 컬렉션에 적용할 수 있는 쿼리 예제들입니다. 조건에 맞는 문서를 찾아보세요!

✅ 기본 조건 연습

  1. products 컬렉션에서 price가 100보다 큰 문서 찾기
db.products.find({ price: { $gt: 100 } })
  1. employees 컬렉션에서 age < 30 또는 department이 "HR"인 문서
db.employees.find({ $or: [{ age: { $lt: 30 } }, { department: "HR" }] })
  1. orders 컬렉션에서 quantity가 5 이상, 10 이하인 문서
db.orders.find({ quantity: { $gte: 5, $lte: 10 } })
  1. customers 컬렉션에서 city가 "Seoul"이 아닌 문서
db.customers.find({ city: { $ne: "Seoul" } })
  1. movies 컬렉션에서 rating이 8 이상이고 genre가 "comedy" 또는 "drama"인 문서
db.movies.find({ rating: { $gte: 8 }, genre: { $in: ["comedy", "drama"] } })
  1. books 컬렉션에서 author가 "John Doe"이고 publishedYear > 2000
db.books.find({ author: "John Doe", publishedYear: { $gt: 2000 } })
  1. vehicles 컬렉션에서 type이 "car"가 아니고 price > 20000
db.vehicles.find({ type: { $ne: "car" }, price: { $gt: 20000 } })
  1. restaurants 컬렉션에서 rating이 5이고 cuisine이 "Italian", "French"가 아닌 문서
db.restaurants.find({ rating: 5, cuisine: { $nin: ["Italian", "French"] } })
  1. users 컬렉션에서 age >= 30이고 city != "New York"
db.users.find({ age: { $gte: 30 }, city: { $ne: "New York" } })
  1. flights 컬렉션에서 departure가 "London"이거나 arrival이 "Tokyo"인 문서
db.flights.find({ $or: [{ departure: "London" }, { arrival: "Tokyo" }] })

📝 마무리 정리

항목 설명

비교 연산자 숫자나 문자열 조건 비교 ($gt, $lt, $eq, $ne 등)
논리 연산자 조건 조합 ($and, $or, $not, $nor)
실전 팁 $in, $nin은 리스트 기반 조건 / $and 없이 여러 조건은 AND로 묵시 처리됨

✅ 이 연산자들을 잘 활용하면 복잡한 쿼리도 효율적으로 구성할 수 있습니다! MongoDB 쿼리 연습은 CRUD 능력 향상뿐 아니라 데이터 구조 이해에도 큰 도움이 됩니다.

다음엔 Aggregation Pipeline 쪽도 이어서 배우면 훨씬 더 강력한 MongoDB 쿼리를 만들 수 있어요! 🚀

'Database' 카테고리의 다른 글

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

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 8-45. NoSQL MongDB(5/6) MongoDB 비교문법 & 논리연산
상단으로

티스토리툴바