MongoDB

EunRyeong Park·2022년 7월 29일
0

MongoDB(대표 NoSQL)
-엄청나게 큰 DB=>대용량 데이터를 처리하기 좋음

✔️RDB vs NoSQL

  • RDB(Relational DataBase)
    -관계형 데에터베이스
    -SQL 질의어를 사용하기 위해 데이터를 구조화함
  • NoSQL
    -구조화된 질의어를 사용하지 않는 데이터베이스
    -자료관계에 초점을 두지 않고 데이터를 구조화하지 않고 유연하게 저장
    =>SQL을 사용하기 위해서는 DDL(데이터 구조화)를 통해 스키마에 정의된 데이터가 아니면 저장 할 수 없는 제약이 있음
    ⁕NoSQL을 사용하여 사전작업 없이 DB사용가능

⁘MongoDB 기본개념

①DataBase
-하나 이상의 collection을 가질 수 있는 저장소 (SQL에서 db)

②Collection
-하나 이상의 Document가 저장되는 공간 (SQL에서 table)
-document의 구조를 정의하지는 않음

③Document
-MongoDB에 저장되는 자료 (SQL에서 row)
-구조제약없이 유연하게 저장 가능
-BSON을 사용하며 다양한 자료형 지원
-👀ObjectID

	- document에서 유일한 키 값 ~~(SQL에서 primary key)~~
    - 하나씩 증가하는 값이 아닌 document생성시 자동으로 생성 
    (난수와 함께 생성됨)
  • MongoDB Compass (SQL workbench)
    -database, collection, document 등을 시각화하여 관리하는 도구

Mongoose ODM

  • Mongoose (단지 이름)
  • ODM(Object Data modeling)
    -collection에 집중하여 관리하도록 도와주는 패키지
    -collection을 모델화->기능을 쉽게 사용할 수 있도록

-Express.js에서 models디렉터리에 Schema와 Model을 같이 위치
-> app객체 해당 부분에 db연결을 명시하는 mongoose.connect를 위치

✔️Mongoose ODM 사용이유

①연결관리
-간단하게 db와의 연결상태를 관리해줌

②스키마 관리
-code-level에서 스키마를 정의하고 관리함
(데이터 형식을 미리 정의해야 코드작성과 프로젝트 관리 유용)

③populate
-mongoDB는 Join이 없음=>populate 사용하여 간단하게 구현

✔️Mongoose ODM 사용 순서

ⅰ스키마 정의

ⅱ모델 만들기

ⅲ데이터 베이스 연결
-connect함수를 이용하여 연결

ⅳ모델 사용
-CRUD수행 가능
❗CRUD

  • create
    -document 생성
    -document object(단일)나 document object의 array(복수) 전달 가능
    -생성된 document 반환
  • find(read)
    -document 검색
    -query사용
	- {key:value}로 exact match
    - $lt, $lte, $gt, $gte(>,>=,<,<=)
    - $in 다중값 검색->쿼리값으로 배열이 주어지면 자동으로 생성
    - $or 다중 조건 검색
        
  • update
    -document 수정
    -$set operator을 사용하여 통째로 변경하지 않음
  • delete
    -document 삭제

✓populate
-document안에 document를 담지 않고 objectID를 가지고 reference하여 사용할 수 있는 방법 제공
-Document에 저장된 ObjectID를 find 하여 찾아진 Document를 Mongoose가 모델에 주입시켜줌
-->reference되는 objectID를 답고 사용할때 populate하여 하위 document처럼 사용

✔️Mongoose ODM 커넥션 이벤트

  • connected : 연결 완료
  • disconnected : 연결 끊김
  • reconnected : 재연결 완료
  • reconnectFailed : 재연결 시도 횟수 초과

0개의 댓글

관련 채용 정보