본문 바로가기

DB/MongoDB

[MongoDB] 10. 쿼리작성하기 - 타입, 논리 연산자로 비교하기

728x90
반응형

MongoDB는 데이터 타입만으로 크기를 비교할 수 있다.

ex. 문자열(4byte)과 배열(6byte)을 비교하면 배열이 더 크다고 판단.

 

MongoDB의 데이터 타입, 밑으로 내려갈 수록 비교 순서 큼

타입 설명
MinKey 모든 값보다 작은 값
Null null 값
Numbers 4byte ~ 8byte, 정수, 실수
Symbol, String UTF-8 문자열
Object 객체(도큐먼트)
Array 배열
BinData 이진(바이너리) 데이터
ObjectId 문서용 12byte ID, RDB의 PK와 같은 개념
Boolean true, false 값 저장
Data 1970년 1월1일 부터의 시간을 1/1000초 단위로 저장
TimeStamp 타임스탬프
Regular Expression 정규 표현식
MaxKey 모든 값보다 큼

MongoDB는 논리연산자를 통해 여러 조건을 만족하는 도큐먼트를 찾는 쿼리를 작성할 수 있다.

 

MongoDB의 논리연산자

연산자 설명
$and 조건이 모두 만족하는 도큐먼트
$or 조건이 중 하나라도 만족하는 도큐먼트 
$nor 조건이 모두 만족하지 않는 도큐먼트
$not 조건을 만족하지 않는 도큐먼트

논리연산자 연습

$and

// db.컬렉션.find({$and:[조건들]}) 
db.by_type.find(
... {"$and":[
... {"type":"차대차"},{"accident_count":{"$gte":100}},{"death_toll":0} ] },
... {"city_or_province":true, "county":true})

$or

// db.컬렉션.find({$or:[조건들..]})
db.by_type.find({type:"차대사람",
... $or:[{death_toll:0},{heavy_injury:0}]},
... {"city_or_province":true, county:true})

$nor

// db.컬렉션.find({$nor:[조건들]}) 
db.by_type.find(
... {"$nor":[
... {"type":"차대차"},{"accident_count":{"$gte":100}},{"death_toll":0} ] },
... {"city_or_province":true, "county":true})

$not

// db.컬렉션.find({"필드":{$not:{조건}}})
db.by_type.find({ "death_toll": { $not: { $lt: 30 } } })

728x90
반응형