Mongoose ODM

Jong-uk·2023년 4월 8일
0

엘리스 온라인 학습

목록 보기
19/39

Mongoose ODM

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

왜 Mongoose ODM을 사용?

  • 연결관리
    • MongoDB의 기본 Node.js 드라이버는 연결상태를 관리하기 어려움
    • Mongoose를 사용하면 간단하게 데이터베이스와의 연결상태를 관리해줌
  • 스키마 관리
    • 스키마를 정의하지 않고 데이터를 사용할 수 있는 것은 NoSQL의 장점이지만, 데이터 형식을 미리 정의해야 코드 작성과 프로젝트 관리에 유용함
    • Mongoose는 Code-Level에서 스키마를 정의하고 관리할 수 있게 해 줌
  • Populate
    • MongoDB는 기본적으로 Join을 제공하지 않음
    • Join과 유사한 기능을 사용하기 위해선 aggregate 라는 복잡한 쿼리를 해야 하지만, Mongoose는 populate를 사용하여 간단하게 구현할 수 있음

Mongoose ODM 사용하기

1. 스키마 정의

  • Collection에 저장될 Document의 스키마를 Code-Level에서 관리할 수 있도록 Schema를 작성할 수 있음
  • timestamps 옵션을 사용하면
    생성, 수정 시간을 자동으로 기록해 줌

2. 모델 만들기

  • 작성된 스키마를 mongoose에서 사용할 수 있는 모델로 만들어야 함
  • 모델의 이름을 지정하여 Populate 등에서 해당 이름으로 모델을 호출할 수 있음

3. 데이터베이스 연결

  • connect 함수를 이용하여 간단하게 데이터베이스에 연결할 수 있음
  • mongoose는 자동으로 연결을 관리해 주어 직접 연결 상태를 체크하지 않아도 모델 사용 시 연결 상태를 확인하여 사용이 가능할때 작업을 실행함

4. 모델 사용

  • 작성된 모델을 이용하여 CRUD를 수행할 수 있음

create

  • create는 생성된 Document를 반환해 줌

find

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

query

  • MongoDB에도 SQL의 where와 유사한 조건절 사용 가능
  • $lt, $lte, $gt, $gte 를 사용하여 range query 작성 가능
    • <, <=, >, >=
  • $in을 사용하여 다중 값으로 검색
    • 전달 된 배열에 해당하는 것이 하나라도 있다면 데이터 리턴
  • $or를 사용하여 다중 조건 검색
    • 둘 중 하나가 포함 되어있는 사람을 찾겠다.

update

  • update 관련 함수를 사용하여 Document를 수정
  • find~ 함수들은 검색된 Document의 업데이트를 반영하여 반환해 줌
    • 바뀐 내용을 반환해준다고 생각
  • mongoose 의 update 는 기본적으로 $set operator 를 사용하여, Document를 통째로 변경하지 않음
    • 있는 속성이라면 수정, 없는 속성이면 추가한다.

delete

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

populate

  • ocument 안에 Document를 담지 않고, ObjectID를 가지고 reference하여 사용할 수 있는 방법을 제공함
  • Document에는 reference되는 ObjectID를 담고, 사용할 때 populate하여 하위 Document처럼 사용할 수 있게 해 줌

출처 : 엘리스 아카데미

profile
안녕하세요! 만나서 반갑습니다.

0개의 댓글