[DB] MongoDB (NOSQL)

[DB] MongoDB (NOSQL)

NOSQL : Not Only SQL

스키마가 없는 자유로운 데이터 모델이다.

MongoDB란?

NoSQL 데이터베이스이며, 세가지 특징을 가지고 있다.

- Document

: 모든 데이터가 JSON 형태로 저장되며, 스키마가 없다.

: _id 라는 field를 필수적으로 갖는다. ( unique하며 불변성을 갖는다. )

- Full Index Support

: 다양한 인덱싱을 제공한다.

- BASE

- Open Source

1. mongoose : 실제 개발 단계에서 사용하는 것이 맞다.

- MongoDB ODM(Object Document Mapping)중 가장 유명한 라이브러리이다.

- 데이터베이스 연결, 스키마 정의, 스키마에서 모델로 변환, 모델을 이용해 데이터를 다룸

- 프로미스와 콜백 사용가능

Object Document Mapping : 객체와 문서를 1대 1로 매칭해준다.

즉, MongoDB에 있는 데이터를 NodeJS에서 Javascript 객체로 사용할 수 있도록 해준다.

1) 스키마 검증 ( Validation )

: 스키마를 만들 때 여러가지 옵션들이 존재한다.

- required

- validate

** 만약 이메일을 필드로 쓰고 싶은데 어떻게 검증을 해야할지 잘 모르겠다면, 물론 정규식으로 할 수도 있지만 라이브러리를 사용해보자!!

( validator의 여러 기능들 : https://www.npmjs.com/package/validator#validators )

2) 스키마 옵션

: 스키마의 옵션은 다양하다.

검증 관련

- required

- default

- validate

String 관련

- lowercase

- uppercase

- trim

- minlength 등

https://kciter.so/posts/about-mongodb

https://velog.io/@ckstn0777/Mongoose-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

from http://moretz0921.tistory.com/337 by ccl(A) rewrite - 2021-12-09 15:26:38