MongoDB는 C++로 작성된 오픈소스 문서지향적 크로스 플랫폼 데이터베이스이며, 뛰어난 확장성과 성능을 자랑한다.
✔️ NoSQL(Not only SQL)로 분류되는 데이터베이스 시스템 중 인지도 상위권을 유지하고 있다. MySQL 처럼 전통적인 테이블-관계 기반의 관계형 데이터베이스(RDBMS)가 아니며 RDBMS의 한계를 극복하기 위핸 새로운 형태의 저장소이다.
✔️ 관계형DB가 아니므로 RDBMS처럼 고정된 스키마나 JOIN이 없다. 스키마가 없기 때문에 형식에 구애받지 않고 자유롭게 데이터를 넣을 수 있다.
▶️ 스키마란, SQL의 테이블과 비슷한 데이터의 구조를 말한다.
✔️ Document들이 모여서 Collection이 되고, Collection들이 모여서 Database를 이룬다.
✔️ 가장 많이 쓰이는 관계형 데이터베이스를 예로 들면
▶️ Database는 몽고DB에서 같은 용어 Database로 쓰이고,
▶️ Table은 몽고DB에서 Collection,
▶️ Tuple/Row는 몽고DB에서 Document라고 불린다.
✔️ 몽고DB의 Document는 JSON과 같은 BSON구조로 되어있다.
👉 JSON과 BSON의 차이점
👉 MongoDB 더 알아보기
👉 몽고DB 링크
몽고DB 가입 ➡️ Create Organization ➡️ Create Project ➡️ Create Cluster
✔️ Connect Your Application 클릭
✔️ 링크 복사해놓기 (나중에 앱 연결할 때 쓰임)
몽고DB를 간편하게 쓸 수 있는 Object Modeling Tool이다.
몽고DB의 ODM중 가장 유명하고 보편적으로 많이 쓰인다.
ODM (Object Document Mapping) : 객체와 문서를 1대1 매칭한다는 뜻으로
Object는 자바스크립트의 객체이고, Document는 몽고DB의 문서를 뜻한다.
즉, 몽고DB의 문서를 DB에서 조회할 때 자바스크립트 객체로 바꿔주는 역할을 한다.
// 터미널 몽구스 다운로드 코드
npm install mongoose --save
✔️ 몽구스의 대표적인 장점
▶️ 강제 스키마(schema)의 부활
▶️ populate
▶️ 프로미스와 콜백 사용 가능
▶️ 편리한 쿼리 빌더
✔️ Schema & Populate의 부활
▶️ Nosql 자체가 테이블과 join이 없는 것을 활용하는 DB지만 몽구스는 오히려 그 기능을 부활시켰다.
DB에 다큐먼트를 넣을 때 값과 타입 그리고 필드를 검사하고 populate는 SQL의 join과 비슷한 기능을 흉내내준다.
실제로 몽고DB를 사용하다보면 schema와 join이 필요한 경우가 생기기 때문에 이러한 기능은 유용하다.
▶️ 프로미스와 콜백을 자유자재로 전환할 수 있다는 것은 매우 편리하다. 노드는 지금 프로미스가 거의 공식 비동기 API처럼 되어있어서 기본 몽고DB가 콜백 기반이기 때문에 프로미스를 사용할 수 있게 해주는 몽구스가 인기가 많을 수밖에 없다.
▶️ 몽고DB에서 쿼리를 작성할 때 JSON 형식으로 작성하기 때문에 뭔가 장황한 느낌을 준다. 하지만 몽구스의 쿼리는 훨씬 간결하다. 마치 자바스크립트의 API를 제이쿼리가 편리하게 압축시킨 것 처럼 제공하는 쿼리 빌더를 통해 손쉽게 쿼리를 만들 수 있다.
✔️ 몽구스 이용해서 몽고DB 연결하기
🚫 <password>
, <username>
은 <>까지 없애주기
✔️ 결과물 : 터미널에서 콘솔 확인 가능
출처 :
1) https://velopert.com/436
2) https://www.zerocho.com/category/MongoDB/post/5963b908cebb5e001834680e