And Brain said,
Mongoose | node.js를 위한 우아한 MongoDB 객체 모델링 본문
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
Mongoose는 이런 식으로 타입, 기본값, 유효성, 참조 등을 직접 정의하여 스키마를 설정해줄 수 있다.
오늘은 간단하게 19만명의 사람을 연령대별로 분류해보겠다.
$floor, $divide, $subtract, $year, $dateFromString 은 무슨 역할을 하는지 짐작이 될테니 aggregate() 메서드와 $project만 설명하겠다.
aggregate() 메서드는 파이프라인 단계를 진행하고 그 결과를 배열로 가져온다.
$project는 원하는 필드를 포함하거나 제외할 수 있게해준다.
Thanks for watching, Have a nice day.
'IT > Node.js' 카테고리의 다른 글
Mongoose | 거대한 데이터베이스(MongoDB)를 다루는 작은 거인 (7) | 2022.11.11 |
---|---|
Node.js가 각광받은 이유 - 비동기(async), non-blocking (0) | 2022.10.15 |
[Express] req.params, req.query, req.body (0) | 2022.09.10 |
[Express, Mybatis, OracleDB] selectKey가 안 될 때 (0) | 2022.09.09 |
oracleDB를 잔뜩 담은 mybatis를 express에 넣어 보내버리기 (5) | 2022.08.17 |