Mongoose

Code_Builder·2024년 8월 21일
0
post-thumbnail

Mongoose?

MongoDB와 상호작용하기 위해 사용되는 ODM(Object Document Mapper) 라이브러리

ODM 이란?

데이터베이스와 애플리케이션 간의 데이터 변환을 처리하는 기술

쉽게 말해서,
관계형 데이터베이스 (예: Oracle, MySQL): ORM (Object-Relational Mapping)을 사용
비관계형 데이터베이스 (예: MongoDB ,CouchDB): ODM (Object-Document Mapping)을 사용


ORM(객체 지향) VS ODM(문서 지향) 비교

ORM (Object-Relational Mapping)

  • 데이터베이스의 테이블과 클래스 간의 매핑을 통해 객체 지향적인 접근을 가능
  • SQL 쿼리를 직접 작성하지 않고도 데이터베이스 작업을 수행

ODM (Object-Document Mapping)

  • 데이터가 문서 형태로 저장되는 경우 객체와 문서 간의 매핑을 관리
  • JSON과 같은 형식으로 데이터를 주고받을 수 있으며, 스키마가 유연

주요 기능

  • 스키마 기반 모델링: 스키마를 통해 데이터의 구조를 정의할 수 있으며 데이터의 필드 타입, 필수 여부, 고유성 등을 설정 가능

스키마 설정하게 되면 유연성은 떨어져도 모든 문서가 일관된 구조를 가지게 되므로 데이터의 무결성을 보장

  • 유효성 검사: 데이터가 데이터베이스에 저장되기 전에 유효성을 검사하는 기능을 제공하며 잘못된 데이터를 사전에 방지 할 수 있음

  • 쿼리 빌더: Mongoose는 다양한 쿼리를 쉽게 작성할 수 있는 메서드를 제공하며 데이터를 쉽게 조회, 업데이트, 삭제할 수 있음

스키마 정의

const Schema = mongoose.Schema;

const userSchema = new Schema({
    name: { type: String, required: true },
    age: { type: Number, required: true },
    email: { type: String, required: true, unique: true }
});

모델 생성

const User = mongoose.model('User', userSchema);
//참고: 테이블명은 users 로 만들어짐 

데이터 CRUD

// 데이터 생성
const newUser = new User({ name: '홍길동', age: 30, email: 'hong@example.com' });
newUser.save();

// 데이터 조회
User.find().then(users => console.log(users));

// 데이터 업데이트
User.updateOne({ name: '홍길동' }, { age: 31 });

// 데이터 삭제
User.deleteOne({ name: '홍길동' });

NodeJs(ExpressJs 프레임웍기반)& MongoDB 사용하며 프로젝트 개발 중 정리한 내용

개발 레포: https://github.com/Engineer-kim/NodeJs

profile
사소한일에도 최선을 다하기

0개의 댓글

관련 채용 정보