And Brain said,

Mongoose | node.js를 위한 우아한 MongoDB 객체 모델링 본문

IT/Node.js

Mongoose | node.js를 위한 우아한 MongoDB 객체 모델링

The Man 2022. 11. 7. 23:41
반응형

 

Mongoose


MongoDB를 기반으로 한 node.js 전용 객체지향 라이브러리



간단한 Express 서버와 함께 mongoose도 가져오자.

 


이렇게 연결해줬다.

자 이제 Schema를 설정해줄 것이다.

RDBMS의 Schema는 데이터베이스를 구성하는 레코드의 크기, 키(key)의 정의, 레코드와 레코드의 관계, 검색 방법 등을 정의한 것이다.

Mongoose의 Schema는 MongoDB에 저장되는 document의 데이터 구조, 즉 필드 타입에 관한 정보를 JSON 형태로 정의한 것으로 RDBMS의 테이블 정의와 유사한 개념이다.

MongoDB는 Schema-less하다. 이는 RDBMS처럼 고정 Schema가 존재하지 않는다는 뜻으로 같은 Collection 내에 있더라도 document level의 다른 Schema를 가질 수 있다는 의미이다.

이는 자유도가 높아서 유연한 사용이 가능하다는 장점이 있지만 명시적인 구조가 없기 때문에 어떤 필드가 어떤 데이터 타입인지 알기 어려운 단점이 있다. 이러한 문제를 보완하기 위해서 Mongoose는 Schema를 사용한다.

https://poiemaweb.com/mongoose

 

Node.js(express)와 MongoDB 연동 RESTful API - Mongoose | PoiemaWeb

Mongoose는 Node.js와 MongoDB를 위한 ODM(Object Data Mapping) library이다. Java 기반의 Hibernate. iBatis 등의 ORM(Object Relational Mapping)과 유사한 개념이다. ODM의 사용은 코드 구성이나 개발 편의성 측면에서 장점이

poiemaweb.com

 



Mongoose는 이런 식으로 타입, 기본값, 유효성, 참조 등을 직접 정의하여 스키마를 설정해줄 수 있다.


오늘은 간단하게 19만명의 사람을 연령대별로 분류해보겠다.

 

결과


$floor, $divide, $subtract, $year, $dateFromString 은 무슨 역할을 하는지 짐작이 될테니 aggregate() 메서드와 $project만 설명하겠다.

aggregate() 메서드는 파이프라인 단계를 진행하고 그 결과를 배열로 가져온다.

$project는 원하는 필드를 포함하거나 제외할 수 있게해준다.


Thanks for watching, Have a nice day.

 

반응형
Comments