MongoDB와 Mongoose의 차이점


157

mongodb 데이터베이스를 사용하고 싶었지만 자체 웹 사이트와 설치 방법이있는 mongodb와 mongoose의 두 가지 데이터베이스가 있음을 알았습니다. 그래서 나는 "어느 쪽을 사용해야합니까?"라는 질문을 스스로에게 제기했습니다.

이 질문에 답하기 위해이 두 가지의 차이점이 무엇인지 설명 할 수 있는지 커뮤니티에 문의하십시오. 그리고 가능한 장단점? 그들은 실제로 저와 매우 비슷해 보이기 때문입니다.


답변:


233

MongoDB는 BSON 문서 형태로 데이터를 저장하는 NoSQL 데이터베이스 시스템이라는 것을 이미 알고 있다고 가정합니다. 그러나 귀하의 질문은 Node.js의 패키지에 관한 것입니다.

Node.js의 관점에서 mongodb 는 mongodb 인스턴스와 상호 작용하기위한 기본 드라이버 이며 mongoose 는 MongoDB 의 객체 모델링 도구 입니다.

Mongoose는 MongoDB 드라이버 위에 구축되어 프로그래머에게 데이터 모델링 방법을 제공합니다.

편집 : 나는 이것이 더 좋을 것이라고 언급하고 싶지 않습니다. 그러나 두 가지 접근 방식을 사용할 때의 장단점을 나열합니다.

사용자는 Mongoose를 사용하여 특정 컬렉션의 문서에 대한 스키마를 정의 할 수 있습니다. MongoDB에서 데이터 생성 및 관리에 많은 편의성을 제공합니다. 단점은 몽구스를 배우는 데 다소 시간이 걸릴 수 있으며 상당히 복잡한 스키마를 처리하는 데 약간의 제한이 있습니다.

그러나 컬렉션 스키마를 예측할 수 없거나 Node.js 내부에서 Mongo-shell과 같은 경험을 원한다면 MongoDB 드라이버를 사용하십시오. 픽업하는 것이 가장 간단합니다. 여기서 단점은 데이터를 검증하기 위해 더 많은 양의 코드를 작성해야하며 오류의 위험이 높다는 것입니다.


9
그것은 상당히 의견에 근거한 질문입니다. 일부는 하위 수준 API를 선호 할 수 있습니다. 몽구스 와 네이티브 드라이버 를 확인한 다음 어느 것이 더 좋은지 결정하지 않겠습니까?
juunas

1
@ Michael9 Node.js 용 네이티브 MongoDB 드라이버는 이름이 같습니다. 'Node.js와 관련하여 ...'라는 단어를 참고하십시오. 편집 내용이 잘못되었습니다.
ZeMoon

이 경우에는 @ZeMoon해서는 mongodb안됩니다 MongoDB: P
styvane

몽구스가 컬렉션 이름에 복수로 연결되는 실제적인 차이가있을 수 있습니까?
Antony Gibbs

2
성능 요소를 고려해야합니다.이 URL을 참조하십시오.이 녀석은 멋진 벤치 마크를 공유했습니다. medium.com/@bugwheels94/…
DHIRAJ KATEKAR

46

Mongo는 NoSQL 데이터베이스입니다.

데이터 모델에 ORM 을 사용하지 않으려면 기본 드라이버 mongo.js를 사용할 수도 있습니다 ( https://github.com/mongodb/node-mongodb-native) .

몽구스는 쉽게 이해할 수있는 쿼리로 몽고 데이터에 액세스 할 수있는 기능을 제공하는 회사 중 하나입니다.

몽구스는 데이터베이스 모델에 대한 추상화의 역할을합니다.


1
@ArslanRamay : medium.com/@bugwheels94/… , 매우 도움이 됨
DHIRAJ KATEKAR

14

나는 모두에 대한 발견 또 하나 개의 차이는 매우 쉽게하는 것입니다 connect to multiple databasesmongodb native driver당신이 사용하는 작업 방법에있는 동안 mongoose아직 몇 가지 단점을 가지고있다.

따라서 다중 테넌트 응용 프로그램을 사용하려면 mongodb 기본 드라이버로 이동하십시오.


6

이러한 구성 요소를 독점 코드와 함께 사용하려는 경우 아래 정보를 참조하십시오.

몽고 브 :

  1. 데이터베이스입니다.
  2. 이 구성 요소는 AGPL (Affero General Public License) 라이센스의 적용을받습니다.
  3. 이 구성 요소를 독점 코드와 연결하면 (GPL, LGPL 등) 바이러스 효과로 인해 공개 소스에서 전체 소스 코드를 공개해야합니다.
  4. 클라우드를 통해 애플리케이션을 호스팅하는 경우 (2)가 적용되며 최종 사용자에게 설치 정보를 공개해야합니다.

몽구스:

  1. 객체 모델링 도구입니다.
  2. 이 구성 요소에는 MIT 라이센스가 적용됩니다.
  3. 제한없이 독점 코드와 함께이 구성 요소를 사용할 수 있습니다.
  4. 미디어 나 호스트를 사용하여 응용 프로그램을 배송하는 것은 허용됩니다.

1
내가 언급 할 줄 알았는데 2018 년 10 월 16 일 이전의 서버 구성 요소는 AGPL이지만 이제 일부 사용자 지정 라이센스입니다. 드라이버 (mongodb)는 항상 Apache 였고 독점 코드에는 중요하지 않습니다. 참조 : mongodb.com/community/licensing
DrHouse

2
MongoDB 파트 4에 대한 답변이 올바르지 않습니다. 일반적으로 클라이언트 응용 프로그램은 Apache v2에 따라 라이센스가 부여 된 MongoDB 드라이버 (예 : MongoDB Node.JS 드라이버)를 사용합니다. MongoDB 서버 코드 자체 (데이터베이스)를 수정하고 재배포하는 경우 상업적 계약이 필요하거나 공개 소스가 필요합니다. SSPL 라이센스 변경은 데이터베이스 서비스로서의 클라우드 단지 추가되었습니다 등 MongoDB를 아틀라스 또는 AWS RDS, 유사한 데이터베이스 기능 노출, 즉 절을 공급 업체
완의 Bachtiar

6

mongo-db새로운 개발자에게는 좋은 선택이 아닙니다.
반면에 mongooseORM (Object Relational Mapping)은 새로운 아기에게 더 나은 선택이 될 수 있습니다.


2
스택 오버플로에 오신 것을 환영합니다! 귀하의 답변은 가치가 있지만 설명이 없습니다. 아마도 당신은 여전히 ​​당신의 대답에 몇 단어를 추가 할 수 있습니다. 다음은 좋은 답변을 제공하는 가이드 입니다.
David

4

Mongodb와 Mongoose는 MongoDB 데이터베이스와 상호 작용하는 두 가지 다른 드라이버입니다.

Mongoose : 데이터에 대한 엄격한 모델링 환경을 제공하는 오브젝트 데이터 모델링 (ODM) 라이브러리. MongoDB와 상호 작용하는 데 사용되므로 데이터 관리가 편리하여 삶이 더 쉬워집니다.

Mongodb : MongoDB와 상호 작용하기위한 Node.js의 기본 드라이버.


3

Mongodb와 Mongoose는 완전히 다른 두 가지입니다!

Mongodb는 데이터베이스 자체 이고 Mongoose는 Mongodb 의 객체 모델링 도구 입니다.

편집 : MongoDB는 지적한대로 npm 패키지입니다. 감사합니다!


40
mongodb는 데이터베이스가 아니며 기본 mongo 드라이버 인 노드 패키지입니다. 노드 js에서 mongo 서버에 액세스하기위한 가장 낮은 수준의 API입니다.
mariocatch

3
DB 작업과 몽구스의 Mongodb 기본 드라이버에 대한 질문이었습니다 . 정답이 아닙니다.
sarora

@mariocatch MongoDB는 필요한 쿼리 및 인덱싱으로 원하는 확장 성과 유연성을 갖춘 문서 데이터베이스입니다. 문서의 홈페이지에 작성되었습니다.
Deep Kakkar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.