본문 바로가기
개발 Story/몽고디비

03. Mongodb - 자바스크립트 셸을 통한 맛보기(1)

by niee 2016. 11. 17.

2장 요약


1. 몽고디비 설치(부록 A설치 참조)

https://www.mongodb.com/download-center#community


에서 몽고디비 설치(포스트 작성시 기준 v3.2)


2. 몽고디비 실행 및 옵션


2-1. 몽고디비의 실행은 설치 폴더의 bin폴더의 mongod를 실행 

( 몽고디비는 기본적으로 /data/db 폴더를 데이터 저장 폴더로 사용하기 때문에 리눅스나 맥os 의 사용자는 해당 폴더 생성및 권한을 미리 부여해야함)


2-2. 만약 기본 폴더가아닌 임의 폴더를 데이터 저장소로 사용하고 싶은경우 --dbpath 경로 를 이용한다

ex) /dev/mongo/data 를 사용할 경우

mongod --dbpath /dev/mongo/data


2-3. 로그는 기본적으로 stdout으로 출력되는데 로그를 파일로 저장하고 싶을 경우 --logpath 경로 를 이용한다.

ex)/dev/mongo/log/data.log 를 사용할 경우

mongod --logpath /dev/mongo/log/data.log


2-4. 몽고디비의 기본포트는 27017로 지정이되는데 포트를 변경하고 싶은경우 -port 포트번호 를 이용한다.

ex) 포트번호를 4442로 변경할 경우

mongod -port 4442


2-5. 웹콘솔을 이용하여 간단한 REST 인터페이스를 사용하고 싶은경우 --rest 를 이용한다. 웹콘솔은 몽고디비 실행 포트 + 1000에서 실행된다

ex) 기본 포트인 27017로 실행 중인 경우

mongod --rest

http://localhost:28017 로 접속하여 웹콘솔 확인


2-6. 유닉스 계열에서 프로세스를 데몬으로 실행하도록 할경우 --fork 를 이용한다.

ex)

mongod --fork


2-7. 모든 옵션은 한번에 사용이 가능.

ex)

mongod --dbpath /dev/mono/data --logpath /dev/mongo/log/data.log -port 4442 --rest --fork


2-8. 설정파일 mongo.conf 를 만들어 옵션을 미리 지정한 후 설정 파일에서 읽어서 실행 시킬수 있다.

적용하고 싶은 옵션을 mongo.conf 파일안에 한줄 씩 작성(옵션지정 방법이 약간 다름) 후 -f mongo.conf 를 이용하여 실행한다.

ex)

mongo.conf 생성

dbpath=/dev/mongo/data

logpath=/dev/mongo/log/data.log

port=4442 

rest=true 

fork=true

저장 및 실행

mongod -f mongo.conf


3. 몽고디비 내장 셸은 bin폴더안에 mongo를 실행 시켜 접속할 수 있다. 기본 내장 셸은 자바스크립트 기반이다.

ex)

mongo

접속 되면 아래처럼 접속 버전과 셸 입력이 가능한 > 커서가 위치한다.


MongoDB shell version: 3.2.10

>


4. 간단한 데이터 베이스 생성 및 CRUD 기능


4-1. 데이터 베이스 생성은 use 데이터베이스이름 을 사용하면 간단하게 데이터 베이스가 생성된다.

- 몽고디비의 데이터베이스와 컬렉션(관계형 데이터베이스의 테이블이라 보면되는듯)은 도큐먼트가 처음 인서트될 때 생성된다.

ex)

> use tutorial


switched to db tutorial


4-2. use를 이용하여 데이터 베이스를 선택하면 db라는 명령어(마땅한 단어가 안떠올라 명령어라 하겠다.)를 사용할수 있다.

도큐먼트의 삽입 명령은 insert()이다.

관계형 데이터 베이스의 테이블격인 컬렉션은 별다른 생성 명령어가 필요없이 도큐먼트를 삽입하면 바로 데이터의 삽입과 함께 생성된다.

자바스크립트 셸을 이용한 도큐먼트는 JSON형태로 표현된다. 

ex)사용자이름이 niee인 데이터를 users 컬렉션에 삽입할 경우. 

> db.users.insert({username:"niee"})


WriteResult({ "nInserted" : 1 })


4-3. 컬렉션의 도큐먼트를 확인하는 명령어는 find()이다.

ex)users 컬렉션의 도큐먼트를 확인할 경우

> db.users.find()


{ "_id" : ObjectId("582d97626352953de1eb29d0"), "username" : "niee" }

위처럼 저장한 도큐먼트가 보이는데 _id필드는 몽고디비에서 부여해주는 primary 키이다.

모든 도큐먼트는 _id필드가 있어야한다.


4-4. save()를 이용해도 데이터를 추가할 수 있는데 둘다 신규 도큐먼트에 관해선 도큐먼트가 삽입 된다는 공통점이 있지만

insert()는 primary키가 중복된 경우 duplicate key에러를 발생하며 데이터 추가가 안되지만

save()는 동일한 primary키가 있다면 내용을 수정한다.

ex)_id가 1234인 도큐먼트가 있다면

db.collection.insert({_id:ObjectId("1234"), data:1}) //duplicate key에러

db.collection.save({_id:ObjectId("1234"), data:1}) //1234의 data를 1로 수정



생각보다 내용이 많아서 포스트를 나눠서 정리해야겠다. 

자바스크립트 셸을 통한 맛보기 1부는 여기까지..................