구조는 이렇다.
Server 에 접속하면 DB가 있다.
DB 에는 Collection 이 들어있다.
Document 는 하나의 테이블이라고 생각하면 된다.
테이블들이 여러개 묶여 있으면 그것은 Collection 이 된다.
DB 생성부터 하나씩 해보자.
터미널을 켰다.
mongo를 입력하면 MongoDB 가 실행된다.
실행된 Mongo DB에서 Select , Insert , Update , Delete 를 차례대로 해본다.
Insert
아래 코드를 그대로 터미널에 복사해서 붙여넣으면 된다.
insert 가 수행된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | db.nettuts.insert({ first: 'matthew', last: 'setter', dob: '21/04/1978', gender: 'm', hair_colour: 'brown', occupation: 'developer', nationality: 'australian' }); db.nettuts.insert({ first: 'james', last: 'caan', dob: '26/03/1940', gender: 'm', hair_colour: 'brown', occupation: 'actor', nationality: 'american' }); db.nettuts.insert({ first: 'arnold', last: 'schwarzenegger', dob: '03/06/1925', gender: 'm', hair_colour: 'brown', occupation: 'actor', nationality: 'american' }); db.nettuts.insert({ first: 'tony', last: 'curtis', dob: '21/04/1978', gender: 'm', hair_colour: 'brown', occupation: 'developer', nationality: 'american' }); db.nettuts.insert({ first: 'jamie lee', last: 'curtis', dob: '22/11/1958', gender: 'f', hair_colour: 'brown', occupation: 'actor', nationality: 'american' }); db.nettuts.insert({ first: 'michael', last: 'caine', dob: '14/03/1933', gender: 'm', hair_colour: 'brown', occupation: 'actor', nationality: 'english' }); db.nettuts.insert({ first: 'judi', last: 'dench', dob: '09/12/1934', gender: 'f', hair_colour: 'white', occupation: 'actress', nationality: 'english' }); | cs |
아직 create database aaaa 와 같은 명령어는 쓰지 않았다.
그런데 DB도 생성되고 , 데이터도 insert 된다.
이렇게 코드를 입력하면 데이터가 들어간다. 여기서 nettuts 는 테이블 이름이다.
이번에는 select 를 해본다.
select
1 | db.nettuts.find() | cs |
이렇게 하면 데이터가 출력된다.
find 에는 여러가지 옵션을 사용할 수 있다.
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}]});
$or 옵션을 사용하면 앞쪽 조건을 만족하면서 , nationality 가 english 인 것을 찾는다.
$and 옵션의 결과는 and 게이트를 생각하면 된다.
아래 쿼리를 한번 보자.
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}, {nationality:
'american'
}]}).sort({nationality: -1});
이 쿼리는 gender 가 m이면서 , nationality 가 english 또는 american 인 것을 nationality 기준으로 내림차순 정렬한다.
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}, {nationality:
'american'
}]}).sort({nationality: +1});
반대로 sort 뒤에 있는 부분을 +1로 바꾸면 오름차순이 된다.
nationality 는 내림차순으로 , first 는 오름차순으로 할 수도 있다.
아래 코드처럼 입력하면 된다.
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}, {nationality:
'american'
}]}).sort({nationality: -1, first:1});
쿼리 결과에 limit 을 걸어야 할 때도 있다.
주로 페이징 처리를 할 때 그렇다.
아래 쿼리처럼 작성하면 된다.
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}, {nationality:
'american'
}]}).limit(2);
맨 뒤에 limit() 만 붙여주면 알아서 위에서부터 2개를 가져온다.
만약 앞쪽 데이터를 2개를 생략하고 뒤에 있는 데이터 2개를 가져오려면 어떻게 해야 할까
그럴땐 skip 을 쓰면 된다.
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}, {nationality:
'american'
}]}).limit(2).skip(2);
자 그럼 이것을 가지고 페이징 처리를 하는 쿼리를 만들어 보겠다.
첫 페이지를 보여줄때는 이렇게 하면 될 것 같다.
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}, {nationality:
'american'
}]}).limit(10).skip(0);
skip에 0을 적어서 아무것도 스킵되지 않도록 한다.
맨 위에 10개를 보여주기 위해서 limit 에 10을 적는다.
자. 만약에 한 페이지에 10개씩 보여주기로 했다면 limit 은 계속 10이면 된다.
skip만 10씩 증가하면 된다.
정말 간단하다.
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}, {nationality:
'american'
}]}).limit(10).skip(0);
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}, {nationality:
'american'
}]}).limit(10).skip(10);
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}, {nationality:
'american'
}]}).limit(10).skip(20);
db.nettuts.find({gender:
'm'
, $or: [{nationality:
'english'
}, {nationality:
'american'
}]}).limit(10).skip(30);
이렇게 말이다.
이제 update 를 살펴본다.
update
update는 쿼리를 이렇게 작성하면 된다.
db.nettuts.update({first:
'james'
, last:
'caan'
}, {$set: {hair_colour:
'brown'
}});
이번에는 데이터를 삭제해보자.
delete
db.nettuts.remove({first:
'james'
, last:
'caan'
});
이렇게 하면 삭제가 된다.
NoSQL Booster for Mongo DB에 대해서도 조금 알아보자.
실행하면 빈 화면이 나타날 것이다.
연결을 만들어야 사용 할 수 있다.
Connect 를 클릭한다.
Server부분에 주소를 적는다.
localhost 대신 다른 주소를 적어도 된다.
Name 은 연결의 이름이다.
이렇게 연결을 수립하면 화면 왼쪽에 표시된다.
그리고 DB를 만들 수 있다.
'Database | 데이터베이스 > NoSQL' 카테고리의 다른 글
Mongo DB의 index (0) | 2019.09.30 |
---|---|
Mongo DB Compass select 문 (0) | 2019.03.28 |
NoSQL 간단 정리 - 개요 , 모델링 예시 (0) | 2018.10.11 |
댓글