일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MongoDB
- c++
- data science
- 몽고디비
- nodeJS
- Deep learning
- 딥러닝
- openCV
- 인공지능
- 주일설교
- Machine Learning
- R
- probability
- 데이터 과학
- 빅데이타
- 확률
- 김양재 목사
- 빅 데이타
- 김양재 목사님
- No SQL
- 빅데이터
- 김양재
- 통계
- WebGL
- Big Data
- 빅 데이터
- node.js
- 우리들교회
- Artificial Intelligence
- Statistics
- Today
- Total
Scientific Computing & Data Science
[MongoDB] Application / MongoDB - Node.js 연동하기 본문
Written by Geol Choi |
Server-side 네트워크 프로그램 제작용 프레임웍인 Node.js와 Mongo DB를 연동하는 법에 대해 알아보도록 하겠습니다.
설명방식은 Node.js의 설치하는 것으로부터 시작되는 철저히 따라하기 예제 방식이며, 가장 기초적인 부분을 다루도록 하겠습니다. 따라서, 이미 어느 정도 Node.js에 대해 익숙한 분들은 초반부분을 스킵하고 연동하는 부분만 집중하시기 바합니다.
Node.js를 통해 Mongo DB의 서버와 연결(connect)하고 Mongo DB의 스키마(schema)와 모델(또는 컬렉션)을 생성하는 방법을 알아보겠습니다. 또한 DB에 컬렉션을 추가하고 저장하는 방법에 대해 알아보도록 하겠습니다.
설명은 Mac OS X를 기준으로 하며, Windows의 경우 별도 설명을 덧붙였습니다.
1. Node.js 및 MongoDB 설치
Node.js의 웹사이트를 방문하여 다운로드 할 수 있으며, 사용자의 OS 환경을 자동으로 파악하여 다운로드 됩니다. MongoDB 또한 MongoDB의 다운로드 사이트를 통해 다운로드가 가능합니다. 이미 설치되어 있는 경우 이 과정을 생략합니다.
2. MongoDB 환경변수 설정
Mac OS
$ export PATH=/Users/{user name}/{Mongo DB PATH}/bin:$PATH
Shell이 실행 중이라면 닫고 재시작한 후, 아무 path에서나 "mongo" 명령이 실행되는지 확인합니다. 만약 실행이 잘 된다면 환경변수가 잘 설정된 것입니다.
Windows
시작 > 컴퓨터 > 속성 > 고급 시스템 설정 > 시스템 속성 > 고급 > 환경 변수 > 시스템 변수 > "%MONGODB_HOME%/bin" 추가
3. Node.js 환경변수 설정
Mac OS
다운로드 한 Node.js의 .pkg 파일을 실행하여 설치 시 "설치유형" 단계에서 "설치 위치 변경"을 하지 않고 default로 설치하였다면 환경변수 설정없이 Node.js의 명령어가 인식됩니다.
설치 위치를 변경하였다면, MongoDB의 환경설정과 마찬가지로 설정합니다. 단, "MongoDB PATH"를 "NodeJS PATH"로 변경합니다.
Windows
시작 > 컴퓨터 > 속성 > 고급 시스템 설정 > 시스템 속성 > 시작 및 복구 > 환경 변수 > 시스템 변수 > "[Node.js 설치 path]/nodejs" 추가
이미 자동으로 추가된 경우, 이 단계를 생략합니다.
4. 프로젝트 폴더 생성
Mac OS
Shell 또는 Terminal(Windows의 경우 console)을 실행하고,
"cd [PATH Mongoose-test]" 명령을 입력하여 "Mongoose-test" 폴더로 이동합니다.
"ls" 명령어(Windows의 경우 "dir")를 입력하여 "node_modules" 폴더가 있는지 확인합니다.
Windows
Windows console을 실행하여 "Mongoose-test" 폴더로 이동합니다.
5. Mongoose 설치
Mongoose는 Node.js를 통해 Mongo DB를 사용할 수 있도록 하는 Node.js용 패키지입니다.
Shell에서 npm install 명령어를 통해 설치한다. (현재 경로는 "Mongoose-test" 폴더이므로, 반드시 이 경로로 이동하여 명령어를 실행해야 합니다.)
$ npm install mongoose
설치가 성공적으로 완료되면 "Mongoose-test/node_modules" 폴더 내에 "mongoose"가 생성될 것이다.
6. MongoDB 서버 실행
Mac OS
Windows
MongoDB 서버 실행에 대한 자세한 내용은 이곳을 참고하시기 바합니다. 만약 로컬 서버가 아닌 Mongo Lab 클라우드 플랫폼을 이용 중이라면 이곳을 참고하시기 바랍니다.
7. Node.js 코드 작성
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 | // get mongoose package var mongoose = require('mongoose'); // connect to MongoDB / the name of DB is set to 'myDB' mongoose.connect('mongodb://localhost/myDB'); // we get the pending connection to myDB running on localhost var db = mongoose.connection; // we get notified if error occurs db.on('error', console.error.bind(console, 'connection error:')); // executed when the connection opens db.once('open', function callback () { // add your code here when opening console.log("open"); }); // creates DB schema var userSchema = mongoose.Schema({ username: 'string', age: 'number' }); // compiels our schema into a model var User = mongoose.model('User', userSchema); // add user1 and user2 to "User" model var user1 = new User({ username: 'gchoi', age: 30 }); var user2 = new User({ username: 'jmpark', age: 29 }); // save user1 user1.save(function (err, user1) { if (err) // TODO handle the error console.log("error"); }); // save user2 user2.save(function (err, user2) { if (err) // TODO handle the error console.log("error"); }); | cs |
작성된 JavaScript 코드를 프로젝트 폴더에 "mongoose-test.js"라는 이름으로 저장합니다. 코드의 전체적인 줄거리는 다음과 같습니다:
Line 2: Node.js의 Mongoose 모듈을 얻어와 변수 'mongoose'에 저장합니다.
Line 5: local host에서 'MyDB'라는 이름으로 MongoDB를 설정하고 연결합니다.
Line 8 : 연결된 내용을 'db'라는 변수로 저장합니다.
Line 10 : DB와 연결되는 순간 실행된다. 만약 연결에 실패하면 'connection error'라는 메시지를 출력합니다.
Line 12 - 15 : DB가 open 되었을 때 실행됩니다.
Line 17 - 21 : 'userSchema'라는 변수에 DB schema를 생성합니다. 아마도 MongoDB의 쿼리문을 통해 DB 작업에 익숙한 분들은 이 부분이 익숙하지 않을 수 있겠습니다. Schema는 필요에 따라 언제든 구조 변경이 가능합니다. 간단히 사용자의 이름(username)과 나이(age)의 두 개의 키 값으로 설정하였으며 이름은 'string' 타입으로 age는 'number' 타입으로 하였습니다.
Line 24 : 'userSchema'인 DB Schema를 'User' 모델로 컴파일합니다.
Line 26 - 27 : 'user1'과 'user2' 두 명의 user를 'User'에 등록합니다.
Line 31 - 40 : 'user1'과 'user2'를 저장합니다. DB에 기록하려면 반드시 저장해야 합니다. 혹시라도 궁금하신 분들은 이 부분을 생략해 보길 권장드립니다. MongoDB 콘솔에서 DB에 내용이 들어가지 않음을 발견하실 것입니다. 만약 DB로의 저장에 실패할 경우, 'error'라는 에러 메시지를 출력합니다.
8. Node.js 코드 실행
MongoDB 서버가 실행되고 있는 Shell(또는 console) 외에 Shell 하나를 더 실행하여 프로젝트 폴더로 이동한 후, 다음과 같이 명령을 입력합니다:
$ node mongoose-test.js
만약 이상없이 실행된다면 "open"이라는 메시지가 출력될 것입니다.
[Windows에서 실행한 화면]
[Mac OS에서 실행한 화면]
실행 시 MongoDB 서버가 실행되고 있는 Shell(console)에 Node.js를 통해 실행되는 DB 내용과 용량 및 걸린 시간 등이 표시될 것입니다.
9. Shell(Console)에서 DB 내용 확인
$ mongo
$ use myDB
$ db.users.find()
[Windows 결과 화면]
[Mac OS 결과 화면]
"db.User.find()"가 아닌 "db.users.find()"인 것이 약간 의아스럽습니다. 왜냐하면 모델(또는 컬렉션)명을 'users'가 아닌 'User'로 하였기 때문입니다. 심지어 's'가 붙어야 하는 것 외에 대문자도 소문자로 입력하여야 함에 유의해야 합니다. 이렇듯 collection 이름 입력에 유의해야 하며 현재 사용 중인 DB의 collection명을 확인하려면 다음을 입력합니다:
$ db.getCollectionNames()
아래 그림과 같이 현재 DB의 collection 이름이 "User"가 아닌 "users"로 되어 있음을 확인할 수 있다.
[Windows 결과 화면]
[Mac OS 결과 화면]
이상으로 Node.js와 MongDB를 연동하는 기초 부분에 대하여 설명을 마치도록 하겠습니다. DB의 내용 수정/추가 등 좀 더 고급 과정은 차후에 다루도록 하겠습니다.
'Data Science > MongoDB' 카테고리의 다른 글
[MongoDB] Update Modifiers / Part 5. - $addToSet (0) | 2014.01.26 |
---|---|
[MongoDB] Update Modifiers / Part 4. - $push (0) | 2014.01.25 |
[MongoDB] Application / Mongo Lab 사용하기 (1) | 2014.01.21 |
[MongoDB] Update Modifiers / Part. 3 - $inc (0) | 2014.01.20 |
[MongoDB] Application / Execute MongoDB Server on Windows (0) | 2014.01.20 |