Różnica między MongoDB a Mongoose


157

Chciałem skorzystać z bazy danych mongodb, ale zauważyłem, że istnieją dwie różne bazy danych z własną witryną i metodami instalacji: mongodb i mongoose. Zadałem sobie więc pytanie: „Którego używam?”.

Aby odpowiedzieć na to pytanie, proszę społeczność, czy możesz wyjaśnić, jakie są różnice między tymi dwoma? A jeśli to możliwe plusy i minusy? Ponieważ naprawdę wyglądają bardzo podobnie do mnie.


Odpowiedzi:


233

Zakładam, że wiesz już, że MongoDB to system bazodanowy NoSQL, który przechowuje dane w postaci dokumentów BSON. Twoje pytanie dotyczy jednak pakietów dla Node.js.

Jeśli chodzi o Node.js, mongodb jest rodzimym sterownikiem do interakcji z instancją mongodb, a mongoose to narzędzie do modelowania obiektów dla MongoDB.

Mongoose jest oparty na sterowniku MongoDB, aby zapewnić programistom sposób modelowania danych.

EDYCJA: Nie chcę komentować, co jest lepsze, ponieważ spowodowałoby to upartą odpowiedź. Wymienię jednak kilka zalet i wad stosowania obu podejść.

Korzystając z Mongoose, użytkownik może zdefiniować schemat dokumentów w określonej kolekcji. Zapewnia dużą wygodę w tworzeniu i zarządzaniu danymi w MongoDB. Z drugiej strony nauka mangusty może zająć trochę czasu i ma pewne ograniczenia w obsłudze dość złożonych schematów.

Jeśli jednak schemat Twojej kolekcji jest nieprzewidywalny lub chcesz, aby środowisko Node.js przypominało powłokę Mongo, użyj sterownika MongoDB. Najłatwiej go odebrać. Wadą jest to, że będziesz musiał pisać większe ilości kodu do walidacji danych, a ryzyko błędów jest większe.


9
To dość oparte na opinii pytanie. Niektórzy wolą interfejs API niższego poziomu. Dlaczego nie sprawdzisz Mongoose i rodzimego sterownika, a następnie zdecydujesz, który z nich jest dla Ciebie lepszy?
czerwiec

1
@ Michael9 Natywny sterownik MongoDB dla Node.js ma taką samą nazwę. Zwróć uwagę na słowa „w zakresie Node.js…”. Twoja zmiana była nieprawidłowa.
ZeMoon

@ZeMoon w tym przypadku powinna być mongodbnie MongoDB: P
styvane

Czy może istnieć praktyczna różnica, w której mangusta łączy się z nazwami kolekcji w liczbie mnogiej?
Antony Gibbs

2
Należy również wziąć pod uwagę współczynnik wydajności, zapoznaj się z tym adresem URL, ten facet udostępnił niesamowite testy porównawcze. medium.com/@bugwheels94/…
DHIRAJ KATEKAR


14

I jeszcze jedna różnica w stosunku do zarówno znaleźć jest to, że dość łatwo connect to multiple databasessię mongodb native drivernatomiast trzeba arounds pracę wykorzystanie w mongoosektórych nadal mają pewne wady.

Jeśli więc chcesz skorzystać z aplikacji wielodostępnej, wybierz natywny sterownik mongodb.


6

Jeśli planujesz używać tych komponentów wraz z zastrzeżonym kodem, zapoznaj się z poniższymi informacjami.

Mongodb:

  1. To baza danych.
  2. Ten komponent jest objęty licencją Affero General Public License (AGPL).
  3. Jeśli połączysz ten komponent ze swoim zastrzeżonym kodem, musisz opublikować cały kod źródłowy w domenie publicznej, ze względu na jego efekt wirusowy, taki jak (GPL, LGPL itp.)
  4. Jeśli hostujesz aplikację w chmurze, punkt (2) będzie miał zastosowanie, a także będziesz musiał udostępnić informacje o instalacji użytkownikom końcowym.

Mangusta:

  1. To narzędzie do modelowania obiektów.
  2. Ten komponent podlega licencji MIT.
  3. Zezwala się na używanie tego komponentu wraz z zastrzeżonym kodem, bez żadnych ograniczeń.
  4. Dozwolone jest wysyłanie aplikacji przy użyciu dowolnego nośnika lub hosta.

1
Pomyślałem, że wspomnę. Składniki serwera przed 16 października 2018 r. Były objęte licencją AGPL, ale teraz są to licencje niestandardowe. chociaż sterownik (mongodb) był zawsze Apache i nigdy nie miał znaczenia dla zastrzeżonego kodu. Ref: mongodb.com/community/licensing
DrHouse,

2
Odpowiedź dla części 4 MongoDB jest nieprawidłowa. Generalnie aplikacje klienckie używają sterowników MongoDB (tj. Sterownika MongoDB Node.JS), które są licencjonowane w ramach Apache v2. Jeśli modyfikujesz sam kod serwera MongoDB (bazę danych) i redystrybuujesz go, potrzebujesz albo umowy handlowej, albo open source. Zmiana licencji SSPL jest tylko dodatkiem do klauzuli dostawcy usług w chmurze Database-as-a-Service, tj. Ujawnienie funkcji bazy danych podobnych do MongoDB Atlas lub AWS RDS itp.
Wan Bachtiar

6

mongo-dbprawdopodobnie nie jest dobrym wyborem dla nowych programistów.
Z drugiej strony, mongoosejako ORM (mapowanie relacyjne obiektów) może być lepszym wyborem dla nowicjuszy.


2
Witamy w Stack Overflow! Twoja odpowiedź może być cenna, ale brakuje jej wyjaśnienia. Być może nadal możesz dodać kilka słów do swojej odpowiedzi. Oto przewodnik, jak udzielić dobrych odpowiedzi .
David

4

Mongodb i Mongoose to dwa różne sterowniki do interakcji z bazą danych MongoDB.

Mangusta : biblioteka modelowania danych obiektowych (ODM), która zapewnia rygorystyczne środowisko modelowania danych. Używany do interakcji z MongoDB, ułatwia życie, zapewniając wygodę w zarządzaniu danymi.

Mongodb : natywny sterownik w Node.js do interakcji z MongoDB.


3

Mongodb i Mongoose to dwie zupełnie różne rzeczy!

Mongodb to sama baza danych , podczas gdy Mongoose to narzędzie do modelowania obiektów dla Mongodb

EDYCJA: Jak wskazano, MongoDB to pakiet npm, dzięki!


40
mongodb nie jest bazą danych, jest pakietem węzłów, który jest natywnym sterownikiem mongo. Jest to API najniższego poziomu do uzyskiwania dostępu do serwera mongo z węzła js.
mariocatch

3
Pytanie dotyczyło natywnego sterownika Mongodb dla operacji db w porównaniu z mangustą . Odpowiedź nie jest na miejscu.
sarora

@mariocatch MongoDB to baza danych dokumentów o skalowalności i elastyczności, której potrzebujesz, z zapytaniami i indeksowaniem, których potrzebujesz. Jest napisane na stronie głównej swojej dokumentacji.
Deep Kakkar
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.