2022 AI SW 온라인 교육/SW 코딩 훈련트랙

[SW 코딩] Express.js와 MongoDB - 03. MongoDB와 Mongoose

parkes811 2022. 12. 8. 01:08

01 MongoDB

 

  • MongoDB란?

- 대표적인 NoSQL, Document DB이다.

- Mongo는 Humongouos에서 따온 말로, 엄청나게 큰 DB라는 의미를 가지고 있다.

- 엄청 큰 DB라서 대용량 데이터를 처리하기 좋게 만들어졌다.

 

  • NoSQL과 RDB

  • RDB, Relational DataBase

- RDB는 관계형 데이터베이스로 자료들의 관계를 주요하게 다루는 데이터베이스이다.

- SQL 질의어(Query) 를 사용하기 위해 데이터를 구조화하고, 정형화해야 한다는 특징이 있다.

 

  • NoSQL, Not Only SQL 또는 Non SQL

- NoSQL은 구조화된 질의어를 사용하지 않는 데이터베이스이다.

- 자료 간의 관계에 초점을 두지 않아 데이터를 구조화하지않고, 유연하게 저장할 수 있다는 특징이 있다.

 

  • NoSQL을 사용하는 이유는?

- SQL을 사용하기 위해서는 DDL 명령어를 사용해 데이터를 구조화하는 것이 필수이고, 스키마에 정의된 데이터가 아니라면 저장할 수 없다는 제약이 따르게 된다.

- NoSQL을 사용하면 사전작업 없이 데이터베이스를 사용할 수 있고 데이터베이스 작업에 크게 관여하지 않고 프로젝트를 빠르게 진행할 수 있다는 장점이 존재한다.

 

  • MySQL(RDB) vs MongoDB(NoSQL) 코드 비교 해보기

- MySQL은 구조화된 테이블을 만들어 데이터 정의 등 다양한 사전 작업을 수행해야한다.

- NoSQL은 프로젝트를 빠르게 진행하기 위해 코드가 비교적 단순한 형태이다.

- NoSQL은 다양한 종류가 있지만, 대표적으로 자료를 문서로 저장하는 DocumentDB가 있고, 이 외에 key-value, Graph, large collection 등의 NoSQL DB가 있다.

 

  • MongoDB의 기본 개념

- Database : 하나 이상의 Collection을 가질 수 있는 저장소이고, SQL에서의 database와 유사하다.

- Collection : 하나 이상의 Document가 저장되는 공간, SQL 테이블과 유사하나 Collection이 Document의 구조를 정의하지는 않는다.

- Document : MongoDB에 저장되는 자료의 단위, SQL row와 유사하지만 구조제약없이 유연하게 저장이 가능하다. JSON과 유사한, BSON을 사용하여 다양한 자료형을 지원한다.

 

  • MongoDB의 기본 개념 - Document - ObjectID

 

  • MongoDB 사용 방법 - MongoDB Compass 도구

- MongoDB에 접속하여 Database, Collection, Document 등을 시각화하여 관리할 수 있게 도와주는 도구이다.

- MySQL을 사용할 때 MySQL Workbench와 유사한 도구이다.

 


 

02 Mongoose ODM

 

  • Mongoose ODM이란? - Object Data Modeling

- MongoDB의 Collection에 집중하여 관리하도록 도와주는 패키지이다.

- Collection을 모델화하여, 관련 기능들을 쉽게 사용할 수 있도록 도움을 준다.

 

  • Mongoose ODM을 사용하는 이유는?

- Node.js에서 MongoDB에 대한 기본적인 드라이버를 제공하는데 이 드라이버는 상호 간의 연결 상태를 관리하기 어렵다는 단점이 있다.

 

 

 


 

03 Mongoose ODM 사용하기

 

  • Mongoose ODM 사용 순서
  1. 스키마 정의
  2. 모델 만들기
  3. 데이터베이스 연결
  4. 모델 사용

 

  • 스키마 정의하기

 

  • 모델 만들기

 

  • 데이터베이스 연결

 

  • 모델 사용하기 - 간단한 CRUD

- 작성된 모델을 이용하여 Create, Read, Update, Delete 연산을 수행할 수 있다.

 

  • Query

- MongoDB에도 SQL의 Where와 유사한 조건절을 사용할 수 있다.

- MongoDB의 Query는 BSON(Binary JSON) 형식으로, 기본 문법 그대로 Mongoose에서도 사용이 가능하다.

 

  • 자주 사용되는 Query : Person 객체를 찾는 find 함수 예제

- 비교 표현식 줄임말

- $lt : little ( < )

- $lte : little or equal ( <= )

- $gt : greater ( > )

- $gte : greater or equal ( >= )

- $eq : equal ( = )

- $nq : not equal ( <> )