본문으로 바로가기

(MongoDB의 자료구조 - 기본 CRUD) SELECT

category 카테고리 없음 2015. 10. 14. 14:22


  (기본 CRUD) SELECT

find(rdbms의 select와 동일)


[구문]

find(조건, 조회할필드정보)

- 조건, 조회할 필드벙보 모두 {}로 표현

- 조회할 필드정보 : 필드 정보를 {}로 표현

   형식 {필드명:1,2,...} 조회하고 싶은 필드를 필드명:1 로 표시

   (필드명:0 으로 표시하면 0으로 표시된 필드가 조회되지 않는다)

- find()는 find({})와 동일 : {} 안에 아무것도 명시되어 있지 않으면 전체 데이터를 조회하라는 의미

findOne() - 결과가 하나만 리턴될 때 

count() - 행의 갯수를 리턴

distinct() - 중복제거

db.score.find({},{dept:1})

db.score.distinct("dept") = dept 필드의 중복을 제거하고 출력

sort({필드명:옵션}) - 필드로 옵션에 정한대로 정렬 (1: 오름차순 -1: 내림차순)

db.score.find({}).sort({java:-1})

--- 제한적 출력 ---

limit(숫자) : 숫자개의 document만 출력

db.score.find({}).sort({java:-1}).limit(3)


skip(숫자) : 숫자개를 skip하고 출력

db.score.find({}).sort({java:-1}).skip(3)



[조건]


$lt : <

$gt : >

$lte : <=

$gte : >=


$or : 여러 컬럼을 비교할 때 사용

* dept가 전산이거나 java 점수가 90이상(spring 필드는 제외하고 출력)

db.score.find({$or:[{dept:"전산"},{java:{$gte:90}}]},{spring:0})


$in : 하나의 컬럼에서 여러가지 값을 가지고 비교할 때

* dept가 전산이거나 총무 servlet이 80점 이상인 데이터 출력하기

db.score.find({$or:[{servlet:{$gte:80}},{dept:{$in:["전산","총무"]}}]},{dept:1,servlet:1})


$nin : 지정된 값만 제외할 때


[정규표현식]


1) /값/

- RDBMS에서 like 연산과 동일

- 이름에 홍이 들어간 document 출력 : db.score.find({name:/홍/})

2) ^

- 문자열의 시작을 의미

- 장씨성을 가진 document 출력 : db.score.find({name:/^장/})

3) |

- or의 의미

- 장이나 강씨성을 가진 document 출력 : db.score.find({id:jang|kang})

4) /[a-z]/

- 영문만 출력 한글만 출력하기 위해서는 /[가-힣]/

- a와 z사이의 글자가 들어가는 document 출력 : db.score.find({id:/[a-z]/})

- q) id가 a-z 까지 & 0-9 까지 값을 포함하고 있으면서 4-6 글자 사이의 값

db.score.find({id:/[a-z0-9]{4,6}/})