MongoDB와 Mongoose

이재경·2022년 12월 21일
0

백엔드

목록 보기
1/7

<목표>

  1. MongoDB와 Mongoose
    MongoDB의 특징과 장점에 대해 알아보고,
    Mongoose를 이용하여 Node.js에서 MongoDB를 사용하는 방법을 알아보기

1. MongoDB

대표적은 NoSQL, Document DB
Mongo는 Humongous에서 따온말로, 엄청나게 큰 DB라는 의미
->대용량 데이터를 처리하게 좋게 만들어짐

(1)Database
하나 이상의 collection을 가질 수 있는 저장소
SQL에서의 database와 유사
(2)Collection
하나 이상의 Document가 저장되는 공간
SQL 에서의 table과 유사
하지만, collection이 document의 구조를 정의하지 않음
(3)Document
MongoDB에 저장되는 자료,
SQL에서 row와 유사하지만 구조제약 없이 유연하게 저장 가능
JSON과 유사한, BSON을 사용하여 다양한 자료형을 지원
*ObjectID
각 document의 유일한 키 값, SQL의 primary key와 유사
하나씩 증가하는 값이 아닌 document를 생성할 때 자동으로 생성되는 값

2. MongoDB 사용방법

(1)직업 MongoDB설치하기
직접 모든 데이터베이스 관련 설정을 해야 함
Sharding이나 Replication등의 작업이 필요할 때 운영지식과 노하우가 요구됨
무료로 사용할 수 있는 Community Version을 제공 함

3. Mongoose ODM

(1)Object Data Modiling
MongoDB의 Collection에 집중하여 관리하도록 도와주는 패키지
Collection을 모델화하여, 관련 기능들을 쉽게 사용할 수 있도록 도와줌

(2)연결관리
MongoDB의 기본 Node.js 드라이버는 연결상태를 관리하기 어려움
Mongoose를 사용하면 간단하게 데이터베이스와의 연결상태를 관리해줌

(3)스키마관리
스키마를 정의하지 않고 데이터를 사용할 수 있는 것은 NoSQL의 장점이지만,
데이터 형식을 미리 정의 해야 코드작성과 프로젝트 관리에 유용함
Mongoose는 Code-Level에서 스키마를 정의하고 관리 할 수 있게 해줌

(4)★populate
MongoDB는 기본적으로 Join을 제공하지 않음
Join과 유사한 기능을 사용하기 위해선 aggregate라는 복잡한 쿼리를 해야 하지만,
Mongoose는 populate를 사용하여 간단하게 구현할 수 있음

4. Mongoose ODM 사용하기

(1)Mongoose ODM사용 순서
1.스키마정의

2.모델만들기

3.데이터베이스 연결

4.모델사용

(2)CRUD

1.CREATE

create 함수를 사용하여 Document 생성
Document Object->단일 Document 생성
Document Object의 Array 전달 가능->복수 Document생성
*create는 생성된 Document를 반환해줌

2.FIND(READ)

find 관련 함수를 사용하여 Document 검색
query를 사용하여 검색하거나 findById를 사용하면 ObjectID로
Document를 검색할 수 있음

Query:SQL의 where와 유사한 조건절 사용 가능
BSON 형식으로, 기본문법 그래도 mongoose에서도 사용 가능

{key:value}로 exact match -and
$lt,$lte,$gt,$gte를 사용하여 range query 작성 가능 -and
$in 을 사용하여 다중 값으로 검색 -and
$or를 사용하여 다중 조건 검색 -or

Mongoose는 쿼리 값으로 배열이 주어지면 자동으로 $in 쿼리를 생성해 줌

3.UPDATE

update 관련 함수를 사용하여 Documnent를 수정
find~ 함수들은 검색된 Document를 업데이를 반영하여 반환 해줌
mongoose의 update는 기본적으로 $set operator를 사용하여,
Document를 통째로 변경하지 않음

4.DELETE

delete 관련 함수를 사용하여 Document를 삭제
find~ 함수들은 검색된 Document를 반환해 줌

(3)populate

Document 안에 Document를 담지 않고,
ObjectID를 가지고 reference하여 사용할 수 있는 방법을 제공 함

Document에는 reference되는 ObjectID를 담고,
사용할때 populate하여
하위 Document처럼 사용할 수 있게 해줌

5. Mongoose ODM 위치정하기

일반적으로 models 디렉터리에 Schema와 Model을 같이 위치
app 객체는 어플리케이션 시작을 의미하는 부분이므로
해당 부분에 데이터베이스 연결을 명시하는 mongoose.connect를 위치

profile
코딩으로 빛나게

0개의 댓글