MongoDB(대표 NoSQL)
-엄청나게 큰 DB=>대용량 데이터를 처리하기 좋음
①DataBase
-하나 이상의 collection을 가질 수 있는 저장소 (SQL에서 db)
②Collection
-하나 이상의 Document가 저장되는 공간 (SQL에서 table)
-document의 구조를 정의하지는 않음
③Document
-MongoDB에 저장되는 자료 (SQL에서 row)
-구조제약없이 유연하게 저장 가능
-BSON을 사용하며 다양한 자료형 지원
-👀ObjectID
- document에서 유일한 키 값 ~~(SQL에서 primary key)~~
- 하나씩 증가하는 값이 아닌 document생성시 자동으로 생성
(난수와 함께 생성됨)
Mongoose ODM
-Express.js에서 models디렉터리에 Schema와 Model을 같이 위치
-> app객체 해당 부분에 db연결을 명시하는 mongoose.connect를 위치
①연결관리
-간단하게 db와의 연결상태를 관리해줌
②스키마 관리
-code-level에서 스키마를 정의하고 관리함
(데이터 형식을 미리 정의해야 코드작성과 프로젝트 관리 유용)
③populate
-mongoDB는 Join이 없음=>populate 사용하여 간단하게 구현
ⅰ스키마 정의
ⅱ모델 만들기
ⅲ데이터 베이스 연결
-connect함수를 이용하여 연결
ⅳ모델 사용
-CRUD수행 가능
❗CRUD
- {key:value}로 exact match
- $lt, $lte, $gt, $gte(>,>=,<,<=)
- $in 다중값 검색->쿼리값으로 배열이 주어지면 자동으로 생성
- $or 다중 조건 검색
✓populate
-document안에 document를 담지 않고 objectID를 가지고 reference하여 사용할 수 있는 방법 제공
-Document에 저장된 ObjectID를 find 하여 찾아진 Document를 Mongoose가 모델에 주입시켜줌
-->reference되는 objectID를 답고 사용할때 populate하여 하위 document처럼 사용