[node.js] MongoDB 연결
by 무작정 개발2022.04.04(70일 차)
이번에는 node.js에 MongoDB 연결에 대해 정리할 것이다.

mongo DB란?
mongoDB(몽고 DB)는 데이터 객체들이 컬렉션 내부에서 독립된 문서로 저장되는, 문서 모델을 기반으로 하는
NoSQL 데이터베이스이다.
NoSQL? RDBMS(SQL)?

DB에는 크게 2가지 종류가 있는데 바로 SQL와 NoSQL이다.
(1) RDBMS(SQL) - 관계형 DB
RDBMS(SQL)는 관계형 데이터베이스이다.
행/열의 생김새가 정해진 엑셀에 데이터를 저장하는 것과 유사하고, 그래서 중간에 열을 하나 추가하기는
어렵지만, 정형화되어 있는 만큼 데이터의 일관성이나 분석에 용이하다.
ex) MS-SQL, My-SQL, OracleDB
(2) No-SQL - 비 관계형 DB
No-SQL는 비 관계형 데이터베이스이다.
대규모의 데이터를 유연하게 처리할 수 있는 강점이 있고, 테이블-칼럼과 같은 스키마 없이,
분산 환경에서 단순 검색 및 추가 작업을 위한 키 값을 최적화하고, 지연과 처리율이 우수하다.
대규모 확대가 가능한 수평적인 확장성의 특징을 가지고 있다.
자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있다.
ex) MongoDB, Apache Cassandra, Hadoop
SQL | MongoDB |
테이블 | Collection |
열 | 문서 |
컬럼 | 필드 |
기본키 | ObjectId |
MongoDB설치
MongoDB Community Download | MongoDB
MongoDB Enterprise Server Download
Download MongoDB Enterprise Server, which provides advanced security and performance options for the most demanding apps. Use for free for development.
www.mongodb.com
나는 5.0.6 버전을 설치하였다.

설치를 할 때 계속 next를 누르다가 상단의 화면이 나오면 체크박스 체크를 해제하고
계속 next를 누른다.

여기까지 하면 설치는 끝났다.
1. 환경변수 설정


새로 만들기 버튼을 클릭해서
C:\Program Files\MongoDB\Server\5.0\bin
를 입력해준다.

환경 변수가 잘 만들어졌으면 확인 버튼을 클릭하면 환경 변수 설정은 끝이다.
2. 기존에 만들었던 node폴더 안에 shopping 폴더 생성

3. shopping 폴더 안에 database 폴더 생성

4. database 폴더 우클릭 -> CmdHere 클릭

5. cmd에 입력 (DB 생성)
mongod -dbpath c:\node\shopping\database -> 이게 DB를 만드는 명령어이다.

명령어를 치면 위의 화면이 나올 것이다.
위의 화면이 보이면 DB가 생성된 것이니 CMD 창을 닫아준다.

그리고 다시 database 폴더를 들어가면 위처럼 파일들이 생성될 것이다.
MongoDB 연결

MongoDB의 기본 port : 27017
app1.js
javascript //Express 기본 모듈 require("dotenv").config(); var express = require("express"); var http = require("http"); var path = require("path"); var serveStatic = require("serve-static"); var expressErrorHandler = require("express-error-handler"); var expressSession = require("express-session"); //몽고DB 모듈 var MongoClient = require("mongodb").MongoClient; //데이터베이스 객체를 위한 변수 var database; //java에서 conn 만든거랑 같은 의미 //데이터베이스 연결 function connectDB() { //데이터베이스 연결 정보 var databaseUrl = "mongodb://localhost:27017/shopping"; //연결 MongoClient.connect(databaseUrl,function(err,dbase) { // err는 연결안됬을 때 / dbase는 성공적으로 연결됬을 때 if(err) throw err; console.log("데이터베이스에 연결되었습니다 : " + databaseUrl); database = dbase.db("shopping"); // conn만들기 끝 }); } //익스프레스 객체 생성 var app = express(); app.set("port",process.env.PORT||3000); app.use(express.urlencoded({extended:false})); app.use("/public",serveStatic(path.join(__dirname,"public"))); //public (실제)폴더의 이름을 써준것 app.use(expressSession({ secret:"my key", resave:true, saveUninitialized:true })); var errorHandler = expressErrorHandler({ static : { "404":"./public/404.html" } }); app.use(expressErrorHandler.httpError(404)); app.use(errorHandler); //Express 서버 시작 http.createServer(app).listen(app.get("port"),function(){ //위에 set으로 넣어둔 port를 get으로 가져온거 console.log("익스프레스 서버 on~~ 포트번호는:" + app.get("port")); //서버 시작할때 db로 실행해주면 된다. // - DB연결 함수 호출 connectDB(); });

app1.js를 실행했을 때 위의 콘솔 결과가 나오면 정상적으로 몽고 DB가 연결된 것이다.
[참고]
https://mylko72.gitbooks.io/node-js/content/chapter11/intro.html
NoSQL과 몽고DB 이해 | Node.js & MongoDB
mylko72.gitbooks.io
https://www.mongodb.com/blog/post/ko-kr/4-common-misperceptions-about-mongodb
몽고DB에 대한 4가지 오해 | MongoDB Blog
DocumentDB, MongoDB and the Real-World Effects of Compatibility If there’s confusion in the market for document databases, it probably has to do with how the products are marketed. AWS claims that DocumentDB, its document model database, comes “with Mo
www.mongodb.com
블로그의 정보
무작정 개발
무작정 개발