MongoDB with NestJS

스키마와 모델 주입 경계 맞추기

Mongoose 연동은 문서 구조를 정하는 스키마, 모듈 등록, 모델 주입, 서비스 쿼리가 같은 컬렉션 계약을 바라볼 때 안정적입니다.

핵심 차이

MongoDB는 유연하지만, Mongoose 스키마를 통해 필수 필드와 기본값을 명시하면 서비스 계층의 예측 가능성이 올라갑니다.

@Schema() 문서 구조

@Prop()으로 필드, 필수 여부, 기본값, 유니크 제약을 선언합니다.

SchemaFactory 스키마 객체

클래스 정의를 Mongoose가 읽을 수 있는 스키마 인스턴스로 변환합니다.

forFeature() 모듈 범위 등록

현재 도메인 모듈이 사용할 모델 이름과 스키마를 DI 컨테이너에 연결합니다.

@InjectModel 모델 주입

서비스에서 Model<UserDocument>를 받아 생성, 조회, 삭제 쿼리를 실행합니다.

Collection 문서 저장

MongoDB 컬렉션에는 BSON 문서가 저장되고, 애플리케이션은 모델로 접근합니다.

DTO 검증
스키마는 저장 계약, DTO와 파이프는 요청 입력 계약으로 분리합니다.

인덱스 관리
자주 조회하는 필드와 유니크 필드는 운영 전 인덱스 상태를 확인합니다.

연결 문자열
Docker 로컬과 Atlas 운영 환경은 인증 DB와 비밀값 관리가 다릅니다.