티스토리 뷰
MongoDB에 대한 개요는 이전에 한번 정리한 적이 있었는데요.
이번에는 MongoDB를 설치하고 기본적인 명령어들을 한번 사용해 보려고 합니다.
MongoDB 설치
설치를 위해서는 http://www.mongodb.org/downloads 에서 OS에 따라 파일을 다운로드 하면 됩니다.
버전이 여러가지가 있는데요. 2.2와 같이 짝수로 된 버전이 안정적인 버전이므로 참고해서 다운로드 하시기 바랍니다.
압축을 풀면 설치는 간단하게 끝난다고 보면 됩니다.
다만 데이터베이스에 사용할 폴더를 설정해야 하는데요.
기본적으로 사용하는 폴더가 /data/db 입니다.
저는 간단하게 테스트용으로 사용해서 다른 곳에 폴더를 생성하고 데몬 실행시 다음과 같이 했네요.
> ./mongodb -dbpath ~/Dev/mongodb/data/db
MongoDB 데이터베이스 관리
MySQL의 경우, 데이터베이스나 테이블을 확인하기 위해 다음과 같은 명령어를 사용합니다.
> show databases
> show tables
MongoDB에서 이와 유사한 명령어를 먼저 살펴보도록 하죠..
> show dbs
> show collections
시스템상의 데이터베이스를 살펴보는 것은 비슷합니다만,
MongoDB에는 테이블이라는 개념이 없고 도큐먼트 데이터 모델을 사용하므로 컬렉션이라는 용어를 사용합니다.
실제 사용한 예제를 보면 다음과 같습니다.
./mongo 를 실행해서 자바스크립트 셀을 구동하면 기본적으로 "test"라는 DB에 접속이 됩니다.
아직 컬렉션은 만들어지지 않은 것을 확인할 수 있습니다.
사용하는 DB의 세부 내용을 보기 위해서는 db.stats()를 실행하면 됩니다.
그러면 "mini"라는 새로운 DB를 만들어 보도록 하죠.
실제로 MongoDB에서는 데이터베이스를 만드는 것이 필요 없습니다.
데이터베이스와 컬렉션은 도큐먼트가 처음 삽입될 때 생성되기 때문이죠.
새로운 데이터베이스를 이용하는 것은 MySQL와 유사하게 use 명령어를 사용합니다.
> use mini
switched to db mini
이제 데이터베이스에 "users" 라는 컬렉션을 하나 생성해 보도록 하겠습니다.
> db.users.insert({username: "미니"})
이제 데이터베이스와 컬렉션이 모두 만들어졌습니다. 실제 셀에서 수행된 내역을 한번 보시죠..
db.users.find()로 SQL의 select 처럼 검색 질의를 보낸 것을 볼 수 있습니다.
그러면 자연스럽게 MongoDB의 CRUD에 대해서 정리해 보겠습니다.
Create & Read
새로운 도큐먼트를 삽입하기 위해서는 위에서 살펴본 insert 문을 사용하면 됩니다.
또는 save문을 사용해도 되는데요.
위에서는 db.users.save()를 통해 새로운 도큐먼트를 추가했습니다.
그렇다면 insert()와 save()의 차이는 무엇일까요?
insert()는 무조건 값을 추가하지만 save()는 중복 id값이 없는 경우에 추가하고 있다면 수정하는 명령어입니다.
그러므로 명확하게 추가를 하고자 할 경우에는 insert()를 사용하는 것이 보다 나을 듯 합니다.
잠깐 id에 대해서 언급했는데요.
MongoDB의 도큐먼트는 모두 _id라는 필드가 반드시 필요합니다.
이 값이 없으면 MongoDB에서 _id 값을 자동으로 생성해서 추가하게 됩니다.
위에서도 _id 값이 추가된 것을 볼 수 있습니다.
그리고 count() 명령어를 사용해서 컬렉션에 포함된 도큐먼트의 수를 알 수 있습니다.
또한 find() 명령어를 통해 실제 데이터를 가져올 수 있는데요.
몇가지 예제를 살펴보도록 하죠.
find() 명령에 조건을 줄 수도 있고 개수를 제한해서 가져올 수도 있습니다.
Update
MongoDB에서 업데이트는 update() 명령어 $set을 조합해서 사용합니다.
"미니"인 사람을 찾아서 country 필드에 "한국"을 추가한 예제입니다.
$set 연산자는 해당하는 배열 전체에 대해 다시쓰기를 한다고 합니다.
여기에서는 배열이 아니라 "한국"이라는 하나의 값이라 차이가 없지만
만약 country가 배열로 되어 있다면 새로운 항목을 추가할 때 $addToSet이나 $push를 사용하는 것이 효율적이라고 하네요.
새롭게 추가한 항목을 제거하기 위해는 $unset 연산자를 사용하면 됩니다.
Delete
삭제는 remove()를 호출하면 됩니다.
그러나 remove()는 컬렉션을 지우지는 않습니다.
컬렉션을 제거하려면 drop()을 사용하면 됩니다.
참고로 컬렉션에 나오는 system.indexes는 말 그대로 도큐먼트에 대한 인덱스를 나타내는 컬렉션이라고 합니다.
만약 DB도 제거하고 싶으면 어떻게 할까요?
dropDatabase() 명령어를 사용하면 됩니다.
이상으로 간단하게 MongoDB의 CRUD에 대해서 살펴봤습니다.
실제로 사용하려면 이보다 더 많은 명령어를 알아야 할 듯 하네요.
그래도 일단 한번쯤 정리해 놨으니 혹시 다음에 사용하게 된다면 잘 활용할 수 있을 듯 합니다. ^^
'Cloud&BigData' 카테고리의 다른 글
카산드라(Cassandra)의 칼럼 패밀리와 데이터 모델 (1) | 2014.04.21 |
---|---|
Business Plan을 효율적으로 관리하는 린 캔버스 (0) | 2013.11.10 |
MongoDB에 대한 간단한 정리~ (2) | 2012.10.08 |
비즈니스 모델(Business Model)을 위한 nine blocks (0) | 2012.08.08 |
구글 앱 엔진(Google App Engine) 자바 버전 설치 및 프로젝트 생성/실행/배포 ~ (0) | 2012.04.24 |