무작정 개발.Vlog

[node.js] MongoDB 연결

by 무작정 개발
반응형
2022.04.04(70일 차)

 

이번에는 node.js에 MongoDB 연결에 대해 정리할 것이다.

 

mongo DB
mongo DB

 

 

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 버전을 설치하였다.

 

 

mongoDB 설치
mongoDB 설치

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

계속 next를 누른다.

 

mongoDB 설치 2
Finsh 클릭

여기까지 하면 설치는 끝났다. 

 

1. 환경변수 설정

1. 환경변수 설정
1. 환경변수 설정
1. 환경변수 설정 2
1. 환경변수 설정 2

새로 만들기 버튼을 클릭해서

C:\Program Files\MongoDB\Server\5.0\bin

를 입력해준다.

1. 환경변수 설정 3
1. 환경변수 설정 3

환경 변수가 잘 만들어졌으면 확인 버튼을 클릭하면 환경 변수 설정은 끝이다.

 

 

2. 기존에 만들었던 node폴더 안에 shopping 폴더 생성

2. 기존에 만들었던 node폴더 안에 shopping 폴더 생성
2. 기존에 만들었던 node폴더 안에 shopping 폴더 생성

 

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

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

 

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

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

 

5. cmd에 입력 (DB 생성)

mongod -dbpath c:\node\shopping\database      -> 이게 DB를 만드는 명령어이다.

5. cmd에 입력 (DB 생성)
5. cmd에 입력 (DB 생성)

명령어를 치면 위의 화면이 나올 것이다. 

위의 화면이 보이면 DB가 생성된 것이니 CMD 창을 닫아준다.

 

끝

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

 

 


MongoDB 연결

 

DatabaseExe 프로젝트 생성
DatabaseExe 프로젝트 생성

 

 

MongoDB의 기본 port : 27017

 

app1.js


//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();
	
});

Mongo DB 연결 성공
Mongo DB 연결 성공

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

 

반응형

블로그의 정보

무작정 개발

무작정 개발

활동하기