1. 조회(Find)
1.1 Find
1
db.collection.find(query, projection)
- Query : Document 조회 조건을 설정, 모든 Document를 조회 할때는 ({})를 사용함
- Projection : Document를 조회할때 보여지는 필드(컬럼)를 정의
2. Query
2.1 기본 Document 조회
1
2
db.info.info()
db.getCollection('info').find({})
- info 컬렉션에 있는 모든 Document 조회
1
db.info.find({'subject' : 'python'})
- Subject가 Python인 Document 조회
2.2 비교 연산자
1
db.info.find({'level':{$lt:2}})
- {$lt:n} : n 미만인 데이터 조회
- Level이 2 미만인 Document를 조회
1
db.info.find({'level':{$lte:2}})
- {$lte:n} : n 이하인 데이터 조회
- Level이 2 이하인 Document를 조회
1
db.info.find({'level' : {$gt : 3}})
- {$gt : n} : n 초과인 데이터 조회
- Level이 3 초과인 Document를 조회
1
db.info.find({'level' : {$gte : 3}})
- {$gte : n} : n 이상인 데이터 조회
- Level이 3 이상인 Document를 조회
1
db.info.find({'subject':{$in:['java','python']}})
- {$in:[‘a’,’b’]} : 특정 key값이 a,b인 경우에 사용
- Subject가 Java와 Python을 포함하는 Document 조회
2.3 논리 연산자
1
db.info.find({$and :[{'subject' : 'python'}, {'level' : {$gte:3}}]})
- $and : 모든 조건이 True이면 True
- Subject가 Python이고 Level이 3 이상인 Document 조회
1
db.info.find({$nor: [{'subject':'python'}, {'level':{$lte : 1}}]})
- $nor : 조건중 하나라도 False면 True
- Subject가 Python이 아니고 Level이 1이하가 아닌 Document 조회
1
db.info.find({'level':{$not:{$gt:2}}})
- $not : 조건중 하나라도 False면 True
- Level이 2보다 크지 않은 Document 조회 (2포함)
1
db.info.find({$or :[{'subject' : 'python'}, {'level' : {$gte:3}}]})
- $or : 조건중 하나라도 True이면 True
- Subject가 Python이거나 Level이 3 이상인 Document 조회
2.4 Where
1
db.info.find({$where : 'this.level == 1'})
- $Where 연산자를 사용하면 자바스크립트 표현식 사용이 가능
- Level이 1인 Document 조회
3. Projection
3.1 Projection
1
2
3
db.info.find({},{'_id':false, 'level':false})
db.info.find({},{'subject':true, 'level':true})
db.info.find({},{'_id':false,'subject':true, 'level':true})
- Document를 조회할때 보여지는 필드(컬럼)를 정의
- Subject와 Comments만 출력하도록 Find
- 설정을 True 값을 설정하던가 False값을 설저
- _id는 따로 설정을 안하면 True임
4. Find Method
4.1 Find Method
Find Method를 사용하면 Find를 사용한 Documen의 결과를 가공하여 출력함
4.2 Sort
1
sort({key:value})
- Document를 정렬시킴
- Key : 정렬할 필드명
- Value : 오름차순 1, 내림차순은 -1
1
db.info.find().sort({'level':1})
- Info 컬렉션의 Document를 Level 오름차순으로 정렬
1
db.info.find().sort({'level':-1})
- Info 컬렉션의 Document를 Level 내림차순으로 정렬
1
db.info.find().sort({'level' : -1, 'subject':1})
- Level을 기준으로 내림차순으로 정렬 후 Subject를 기준으로 오름차순으로 정렬
4.3 Limit
1
db.info.find().limit(3)
- Limit을 사용하면 Document 출력 결과의 수를 제한 할수 있음
- Documnet의 결과를 3개 까지만 출력
1
db.info.find().sort({'level' : -1}).limit(3)
- Document의 결과를 Level로 내림차순으로 정렬하고 3개까지만 출력
4.4 Skip
1
db.info.find().skip(2)
- Skip을 검색한 Document의 결과의 시작부분을 설정할때 사용
- Document를 3번째부터 출력
- Limit, Skip을 함께 사용해서 MySQL의 Limit과 같이 사용하수 있음
5. Update
5.1 Update
1
db.collection.update(query, update, {upsert : <bool>, multi:<bool>})
- Upsert : Insert와 Update의 합성어로 데이터가 있으면 Update, 없으면 Insert 한다는 의미
- Multi : True로 설정되면 여러개의 Document를 수정함, 기본값은 False
1
2
3
4
5
6
7
8
9
10
db.info.update(
{'subject' : 'html'},
{'subject' : 'sass','level' : 2}
)
db.info.update(
{'subject' : 'less'},
{'subject' : 'less', 'level' : 2},
{'upsert' : true}
)
- 특정 Document를 새로운 Document로 수정하기
5.2 Set, Unset
1
db.info.update({subject : 'java'}, {$set:[level:4]})
- $set을 사용하면 특정 Document의 필드를 수정함
- Java의 Level을 4로 수정
- 한개의 데이터만 수정이 됨
1
2
3
4
5
db.info.update(
{level:2},
{$set : {level:1}},
{multi : true}
)
- Level 2를 Level 1로 수정
- 여러개의 데이터를 수정
1
2
3
4
db.info.update(
{subject : 'sass'},
{$unset:{level:1}}
)
- Subject가 Sass인 Documnet의 Level필드 삭제
- Level:1의 1인 true를 의미함
1
2
3
4
5
db.info.update(
{level : {$lte:3}},
{$set : {level:1}},
{multi : 1}
)
- Level이 3이하인 데이터를 1로 수정하기
1
2
3
4
5
db.info.update(
{level:{$exists:false}},
{$set:{level:2},
{multi : 1}}
)
- Level이 없는 데이터에 Level 추가하기
6. 함수 (Function)
6.1 Function
1
2
3
4
var showSkip = function(start){
return db.info.find().skip(start-1)
}
showSkip(3)
- 자바스크립트 문법으로 함수 작성 가능
- Skip 함수를 생성