1. mongodb 시작하기

Installation

installation on ubuntu

먼저 다음과 같이 mongodb가 설치되어 있는지 확인한다. mongod는 서버, mongo는 클라이언트 이다.

mongod --version
mongo --version

만약 설치가 되어있지 않다면 다음 명령어로 설치를 진행한다.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
sudo apt-get update

sudo apt-get install -y mongodb-org

설치가 완료되었다면 아래의 명령어로 서비스를 실행시킨다.

sudo service mongod start

서비스가 정상적으로 실행되었는지 확인하기 위해 다음과 같은 명령어를 사용한다.

sudo service mongodb status

이제 다음 명령어로 mongodb에 접속한다.

mongo

접속이 완료되었다면 database를 관리하기 위한 계정을 만들어야 한다. 이 계정을 통해 외부 컴퓨터에서도 본 database에 접근할 수 있게 된다. 다음과 같은 admin database에 접근하여 root user를 생성한다.

use admin
db.createUser({user: "root", pwd: "mypassword", roles: [{ role: "root", db: "admin" }] });

유저를 생성하였다면 다음 명령어로 설정파일을 열어 authorization을 enabled로 해준다.

cd /etc/mongod.conf

설정이 완료되었다면 mongodb를 다시 실행시킨다.

sudo service mongod restart

다시 시작한 뒤에는 사용할 계정을 만들어 준다.

use app    #app 대신에 내가 만들 db명을 선택
db.createUser(
 { user: "app",
 pwd: "mypassword",
 roles: ['readWrite','userAdmin'] } )

생성한 아이디로 로그인 해본다.

mongo -uapp -pmypassword app

connect to mongodb

mongo --port <포트> -u "<사용자 계정>" -p "<비밀번호>" --authenticationDatabase "admin"

Configuration

보안설정 바꾸기 Vim /etc/mongod.conf

https://velopert.com/457

Authoriztion 사용하기 http://www.tutorialbook.co.kr/entry/MongoDB-%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%EC%9E%90-%EC%9D%B8%EC%A6%9D-authorization-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

Basic Concepts

Collection

create collection

db.createCollection(name, [options])

delete collection

db.COLLECTION_NAME.drop()

Schema

일종의 데이터의 양식이다. 이 스키마를 기반으로 모델을 생성한다.

Model

일종의 커넥션으로 다른 것들은 이 모델 객체에서 바로 수행한다. 여기서 새로운 데이터를 저장하는 save를 하기 위해서는 instance를 생성하여야 하고, 다른 경우는 이 모델에서 바로 수행한다.

Query

update

example

db.getCollection('schedule').update({"email":"test"}, {$set:{"email":"test@test.com"}}, {muti:true});

{% raw %} 위 예제는 query를 만족하는 여러가지 데이터를 한번에 바꾸는 명령이다. 두번째 인자는 update 할 object 부분인데, {$set:{}} 을 넣어 특정 키값을 변경하고 있다. 만약 이렇게 $set 을 사용하지 않으면 해당 데이터가 통으로 교체되어 버린다. {% endraw %}

Transaction

서버버전 4 이상에서 제공한다.

featurecompatibility를 "4.0" 으로 해야한다.

commitTransaction()은 sessionEnd 까지 포함된 개념이다.

Uninstallation

sudo service mongod stop
sudo apt-get purge mongodb-org*
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

Cookbook

위치 찾기

db.collection.createIndex( { <location field> : "2dsphere" } )