Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]

[MONGODB를 하나도 모르는 사람의 딥러닝] WINDOWS MONGODB 설치 및 사용법

2020. 12. 10. 11:20database/mongodb

728x90

MongoDB 설치

NoSQL 데이터베이스 중 MongoDB를 설치해보겠습니다.

https://www.mongodb.com/download-center?jmp=nav#community

 

Try MongoDB Products

Try MongoDB products free. Download locally, or use in the cloud. Our software makes it easy for developers to work with data.

www.mongodb.com

 

Windows 탭에서 버전을 선택 후 msi 설치파일을 다운로드합니다.

 

next 하면서 설치를 마무리합니다.

저는 개발언어 및 툴을 일괄 관리하는 폴더에 따로 설치를 했습니다.

경로는 똑같지 않아도 됩니다. mongoDB를 설치한 폴더를 볼까요.

 

bin 폴더 안에 보면 mongod.exe 파일이 있습니다.

mongod.exe 파일은 서버 실행 파일이며, mongo.exe 는 MongoDB를 조작할 수 있는 Shell 프로그램입니다.

mongod.exe 를 통해서 MongoDB 서버를 실행하기 전 db 폴더를 생성해야 합니다.

저는 폴더명을 data로 생성하였습니다.

 

 

명령어를 통해서 data를 MongoDB의 db 폴더로 연결해보겠습니다.

mongod.exe가 있는 폴더에서 다음 명령어를 입력합니다.

>mongod.dex -dbpath c:\dev\mongoDB\data

-dbpath 뒤에는 db로 사용할 폴더 경로를 지정하면 됩니다. 원하는 곳에 만들어도 좋아요.

 

mongod.cfg 파일을 생성합니다. cmd 명령어를 통해 생성해도 좋으며 nodepad를 열어 mongod.cfg 파일을 직접 생성해도 됩니다.

확장자는 txt가 아닌 cfg 파일로 해주세요!

 

mongod.cfg 안에는 다음 내용을 적고 저장합니다.

#은 주석처리하므로 필요한 설명을 추가하여도 좋습니다.

  • mongod.cfg

# 데이터베이스 폴더
dbpath = C:\dev\mongodb\data

# mongdb 포트
port = 27017

# 로그 파일
logpath = C:\dev\mongodb\logs\mongo.log


 

로그파일을 저장할 폴더도 생성해주세요.

cmd에 다음과 같이 입력하여 mongDB에 mongod.cfg에 있는 설정을 적용하고 윈도우 재시작을 해도 서비스가

작동되도록 설정합니다.

> mongod.exe -f C:\dev\mongoDB\mongod.cfg -install

서비스를 시작하고자 할 땐 -> sc start mongodb

서비스 종료 -> sc stop mongodb

서비스 시작 후 정상적으로 작동되는지 확인해봐야겠죠

http://127.0.0.1:27107 을 입력해서 MongoDB에 접속해봅니다.

 

정상적으로 접속된 걸 확인할 수 있습니다.

서비스 작동여부 확인은 아래처럼 합니다.

 

명령어를 실행해서 시작해도 좋고 직접 수동으로 선택할 수 있습니다.

robomongo 설치

다음은 MongoDB 모니터링 툴인 robomongo 를 설치해보고 사용법을 간단히 익혀볼게요.

https://robomongo.org/

 

Robo 3T | Free, open-source MongoDB GUI (formerly Robomongo)

Read by Dmitry Schetnikovich

robomongo.org

mongod.cfg에 입력한 포트번호에 맞게 저장합니다.

cmd 창으로 mongoDB에 연결되는지 확인해봅니다. 물론 위에서 먼저 확인할 수 있습니다.

mongo.exe 가 있는 폴더에서 입력합니다.

>mongo

 

 

다시 robomong로 돌아와 방금 전 생성한 세션에 접속합니다.

 

(해당 글은 이전에 올렸던 글로, 최신버전을 설치하였다면 다르게 보일수 있습니다.)

마우스 우 클릭한 후 Open Shell 을 클릭합니다.

우선 처음으로 db를 생성해보겠습니다.

  • DB 생성
    – use test

test 라는 Database를 사용하겠다는 의미이며 없으면 test라는 Database를 생성합니다.

 

현재 사용하고 있는 database 확인하는 명령어는 db 입니다.

 

 

현재 있는 database 목록을 보는 명령어는 show dbs 입니다.명령어

  • use 데이터베이스이름 : 해당 데이터베이스가 있으면 사용하고 없으면 생성
  • db : 현재 사용중인 db
  • show dbs : 생성되어 있는 database 목록
  • db.dropDatabase() : database 삭제
  • db.createCollection() : collection 생성

 

RDBMS에서 table이라면, MongoDB에서는 Collection 을 의미합니다.

mongoDB를 쉽게 이해하기 위해 rdbms와 비교를 해볼까요

RDBMS와 MongoDB이 비교

RDBMS mongoDB
table collection
row document
column field
pk (primary key) object id
relation ship embedded linking

 

Collection 을 생성해보겠습니다.

  • Collection 생성
db.createCollection('test',{
capped : true,
size : 2048000
})
속성 설명
capped true 로 하면 용량 초과시 오래된 데이터를 덮어씌웁니다. size 입력 필수
autoIndex ObjectId에 indexing 적용
size Collection 최대 사이즈
max Collection을 추가할 수 있는 최대 갯수

  • 생성한 Collection 확인
    – show collections

  • Collection 삭제
    – db.컬렉션명.drop()

INSERT

RDBMS와 달리 테이블을 먼저 구성할 필요가 없습니다.

insert 하는 즉시 field가 생성됩니다.

db.createCollection("test");
db.test.insert([
    {"name": "cooingpop", "language": "nodejs"},
    {"name": "cooingpop2", "language": "python"},
    {"blog": "www.polarglow.com", "author": "cooingpop"}
]);

 

 

방금 생성한 Collection을 확인해볼까요.

  • 데이터 조회
    – db.컬렉션명.find()      ex ) db.test.find()

 

조건을 이용해서 원하는 데이터를 가져올 수 있습니다.

RDBMS 에서 where 절로 이해하면 되겠네요.

  • db.컬렉션명.find(쿼리 조건)
db.test.find({"name":"cooingpop"}).pretty()

“name” field 에서 값이 “cooingpop”인 데이터를 가져옵니다.  맨뒤에 .pretty()는 무엇인지 볼까요?

 

robomongo에서는 차이점을 알 수가 없어요

cmd 창에서 mongoDB를 실행할 경우 바로 알 수 있습니다.

 

pretty() 를 입력했을 때 json 처럼 정렬된 것을 볼 수있습니다. (네 맞아요~ 이쁘게 나와서 pretty 인가봐요)

 

비교 연산자

연산자 설명
$eq = 일치하는 값
$gt 큰 값
$gte 크거나 같은
$lt 작은
$lte 작거나 같은
$ne != 일치하지 않는 값
$in 배열안에 속하는 값
$nin 배열안에 속하지 않는 값

사용 방법은 다음과 같아요.

  • “age” field 값이 20 보다 큰 값 조회
db.test.find({"age":{$gt:20}}).pretty()

 

  • “member”가 student 이면서 age는 20보다 작은 값 조회
db.test.find( 
     { 
            $and : [ 
                 { "member" : "student" }, 
                 { "age" : { $lt:20 } }
             ] 
     }
).pretty()

 

  • Collection 개수 조회
    – db.컬렉션명.count()        ex) db.test.count()

 

  • 데이터 정렬
    1은 오름차순, -1은 내림차순
db.test.find().sort( { "age" : -1 })

 

  • 출력 개수 제한
db.test.find().limit(5)

 

  • 데이터 시작부분 지정
    – 0, 1번째를 제외하고 2번째부터 출력
db.test.find().skip(2)

 

Update

  • author 값이 cooingpop인 row의 content 값을 update!로 변경
db.test.update({ "author" : "coingpop" } , {  "content": "update!" } );

 

Delete

  • author 값이 cooingpop 인 row 삭제
db.test.remove({ "author" : "cooingpop" })

지금까지 MongoDB에 간단하게 접해보는 시간을 가져봤습니다.

다음 포스팅도 기대해주세요.~

 

Continue to code. CTC.

728x90