📘 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 쿼리 실습
다음은 실제 컬렉션에 적용할 수 있는 쿼리 예제들입니다. 조건에 맞는 문서를 찾아보세요!
✅ 기본 조건 연습
- products 컬렉션에서 price가 100보다 큰 문서 찾기
db.products.find({ price: { $gt: 100 } })
- employees 컬렉션에서 age < 30 또는 department이 "HR"인 문서
db.employees.find({ $or: [{ age: { $lt: 30 } }, { department: "HR" }] })
- orders 컬렉션에서 quantity가 5 이상, 10 이하인 문서
db.orders.find({ quantity: { $gte: 5, $lte: 10 } })
- customers 컬렉션에서 city가 "Seoul"이 아닌 문서
db.customers.find({ city: { $ne: "Seoul" } })
- movies 컬렉션에서 rating이 8 이상이고 genre가 "comedy" 또는 "drama"인 문서
db.movies.find({ rating: { $gte: 8 }, genre: { $in: ["comedy", "drama"] } })
- books 컬렉션에서 author가 "John Doe"이고 publishedYear > 2000
db.books.find({ author: "John Doe", publishedYear: { $gt: 2000 } })
- vehicles 컬렉션에서 type이 "car"가 아니고 price > 20000
db.vehicles.find({ type: { $ne: "car" }, price: { $gt: 20000 } })
- restaurants 컬렉션에서 rating이 5이고 cuisine이 "Italian", "French"가 아닌 문서
db.restaurants.find({ rating: 5, cuisine: { $nin: ["Italian", "French"] } })
- users 컬렉션에서 age >= 30이고 city != "New York"
db.users.find({ age: { $gte: 30 }, city: { $ne: "New York" } })
- 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 |