스키마(Schema)와 모델(Model)
- 스키마는 컬렉션에 들어가는 문서 내부의 각 필드가 어떤 형식으로 되어 있는지 정의하는 객체이다.
- 모델은 스키마를 사용하여 만드는 인스턴스로, 데이터베이스에서 실제 작업을 처리할 수 있는 함수들을 지니고 있는 객체이다.
스키마 생성
- 스키마를 만들 때 mongoose모듈은 Schema를 사용하여 정의한다.
- 각 필드 이름과 필드의 데이터 타입 정보가 들어 있는 객체를 작성한다.
- 필드의 기본값으로는 default 값을 설정하면 된다.
- 스키마 내부에 다른 스키마를 내장 시킬 수도 있다.
const mongoose from 'mongoose';
const { Schema } = mongoose;
const PostSchema = new Schema({
title: String,
body: String,
tags: [String], // 문자열 배열
publishedDate: {
type: Date,
default: Date.now // 현재 날짜를 기본값으로 지정
})
스키마의 대표적인 타입
- null : null 값과 존재하지 않는 필드
ex: null - String : 문자열
ex: “mongoDB” - Number : 숫자
ex: 3.14 - Date : 날짜
ex: new Date() - Buffer : 파일을 담을 수 있는 버퍼, UTF-8이 아닌 문자열을 저장
ex: 0x65 - Boolean : true or false
ex: true - ObjectId(Schema.Types.ObjectId) : 객체 ID, 주로 다른 객체를 참조할 때 넣음
ex: ObjectId() - Array : 배열 형태의 값
ex: ["a", "b", "c"]
모델(Model) 생성
- 모델을 만들 때는 mongoose.model 함수를 사용한다.
- model() 함수는 두 개의 파라미터를 필요로 한다.
- 첫 번째 파라미터는 스키마 이름이고, 두 번째 파라미터는 스키마 객체이다.
- 데이터베이스는 스키마 이름을 정해주면 그 이름의 복수 형태로 데이터베이스에 컬렉션 이름을 만든다.(스키마 이름이 'Post'이면 컬렉션은 'posts'로 생성)
- MongoDB에서 컬렉션 이름을 만들 때, 컨벤션은 구분자를 사용하지 않고 복수 형태로 사용하는 것이 권장된다.
- 컨벤션 규칙을 따르고 싶지 않다면, model()함수의 세 번째 파라미터에 원하는 컬렉션 이름을 넣으면 된다.
const mongoose from 'mongoose';
const { Schema } = mongoose;
// 스키마 객체 생성
const PostSchema = new Schema({
title: String,
body: String,
tags: [String], // 문자열 배열
publishedDate: {
type: Date,
default: Date.now // 현재 날짜를 기본값으로 지정
})
// 모델 생성
const Post = mongoose.model('Post', PostSchema);
export default Post;
'DB > MongoDB' 카테고리의 다른 글
역순 Sort 정렬, Limit 제한하기 (0) | 2022.12.14 |
---|---|
[Mongoose] Schema 세팅 할 때 createdAt 자동 설정 (0) | 2022.12.14 |
[Mongoose] 코드에서 MongoDB 사용하기 (0) | 2022.12.13 |
Studio 3T (0) | 2022.12.13 |
MongoDB란? (0) | 2022.12.13 |