본문 바로가기

Database/MongoDB

MongoDB #3 (쿼리 및 필터링)

반응형

비교 연산자

// 같음
db.users.find({ age: 30 })

// 크기 비교
db.users.find({ age: { $gt: 25 } })      // 초과 (greater than)
db.users.find({ age: { $gte: 25 } })     // 이상 (greater than & equal)
db.users.find({ age: { $lt: 35 } })      // 미만 (less than)
db.users.find({ age: { $lte: 35 } })     // 이하 (less than & equal)
db.users.find({ age: { $ne: 30 } })      // 같지 않음 (not equal)

// 범위
db.users.find({ age: { $gte: 25, $lte: 35 } })		// 25이상 35이하

// 포함
db.users.find({ age: { $in: [25, 30, 35] } })		// 25, 30, 35 에 해당되는 데이터
db.users.find({ age: { $nin: [25, 30, 35] } })		// 25, 30, 35 그 무엇에도 해당되지 않는 데이터

 

논리 연산자

// AND (기본)
db.users.find({ 
  age: { $gte: 25 }, 
  city: "서울" 
})

// OR
db.users.find({
  $or: [
    { age: { $lt: 25 } },
    { city: "부산" }
  ]
})

// NOT
db.users.find({ 
  age: { $not: { $gte: 30 } } 
})

// NOR
db.users.find({
  $nor: [
    { age: { $lt: 25 } },
    { city: "서울" }
  ]
})

 

배열 쿼리

// 배열 요소 포함
db.users.find({ hobbies: "독서" })

// 모든 요소 포함
db.users.find({ hobbies: { $all: ["독서", "영화감상"] } })

// 배열 크기
db.users.find({ hobbies: { $size: 2 } })

// 배열 요소 조건
db.users.find({ 
  "scores.math": { $gte: 90 } 
})

 

정규 표현식

// 패턴 매칭
db.users.find({ name: /^홍/ })           // 홍으로 시작
db.users.find({ name: /동$/ })           // 동으로 끝남
db.users.find({ name: /길/ })            // 길 포함
db.users.find({ email: /@gmail\.com$/}) // Gmail 주소

 

존재성 및 타입 검사

// 필드 존재
db.users.find({ phone: { $exists: true } })

// 타입 검사
db.users.find({ age: { $type: "number" } })
db.users.find({ age: { $type: 16 } })    // BSON 타입 코드

 

 

 

 

 

반응형

'Database > MongoDB' 카테고리의 다른 글

MongoDB #5 (집계)  (0) 2025.07.28
MongoDB #4 (인덱싱)  (0) 2025.07.28
MongoDB #2 (기본 명령어, CRUD)  (1) 2025.07.28
MongoDB #1 (소개)  (1) 2025.07.28
MongoDB #0 (설치 & 세팅)  (0) 2025.07.28