Unterschied zwischen MongoDB und Mongoose

157

Ich wollte die Mongodb-Datenbank verwenden, aber ich bemerkte, dass es zwei verschiedene Datenbanken mit eigener Website und Installationsmethoden gibt: Mongodb und Mungo. Also stellte ich mir die Frage: "Welches benutze ich?".

Um diese Frage zu beantworten, frage ich die Community, ob Sie erklären könnten, was die Unterschiede zwischen diesen beiden sind. Und wenn möglich Vor- und Nachteile? Weil sie mir wirklich sehr ähnlich sehen.

Ravindra Galav
quelle
verweisen Sie darauf: medium.com/@bugwheels94/…
DHIRAJ KATEKAR

Antworten:

233

Ich gehe davon aus, dass Sie bereits wissen, dass MongoDB ein NoSQL-Datenbanksystem ist, das Daten in Form von BSON-Dokumenten speichert. Ihre Frage bezieht sich jedoch auf die Pakete für Node.js.

In Bezug auf die Node.js, mongodb ist der nativen Treiber für eine mongodb Instanz in Wechselwirkung und Mungo ist ein Objektmodellierungswerkzeug für MongoDB.

Mongoose basiert auf dem MongoDB-Treiber, um Programmierern die Möglichkeit zu geben, ihre Daten zu modellieren.

EDIT: Ich möchte nicht kommentieren, was besser ist, da dies diese Antwort meinungsbildend machen würde. Ich werde jedoch einige Vor- und Nachteile der Verwendung beider Ansätze auflisten.

Mit Mongoose kann ein Benutzer das Schema für die Dokumente in einer bestimmten Sammlung definieren. Es bietet viel Komfort bei der Erstellung und Verwaltung von Daten in MongoDB. Auf der anderen Seite kann das Erlernen von Mungos einige Zeit in Anspruch nehmen und weist einige Einschränkungen bei der Handhabung von Schemata auf, die recht komplex sind.

Wenn Ihr Sammlungsschema jedoch nicht vorhersehbar ist oder Sie eine Mongo-Shell-ähnliche Erfahrung in Node.js wünschen, verwenden Sie den MongoDB-Treiber. Es ist am einfachsten zu erlernen. Der Nachteil hierbei ist, dass Sie größere Mengen Code zur Validierung der Daten schreiben müssen und das Fehlerrisiko höher ist.

ZeMoon
quelle
9
Das ist eine ziemlich meinungsbasierte Frage. Einige bevorzugen möglicherweise eine API auf niedrigerer Ebene. Warum checken Sie nicht Mongoose und den einheimischen Fahrer aus und entscheiden dann, welcher für Sie besser ist?
Juunas
1
@ Michael9 Der native MongoDB-Treiber für Node.js hat den gleichen Namen. Bitte beachten Sie die Wörter "in Bezug auf Node.js ...". Ihre Bearbeitung war falsch.
ZeMoon
@ ZeMoon in diesem Fall sollte es mongodbnicht sein MongoDB: P
Styvane
Könnte es einen praktischen Unterschied geben, wenn Mungos im Plural auf Sammlungsnamen verweisen?
Antony Gibbs
2
Man sollte auch den Leistungsfaktor berücksichtigen, bitte beziehen Sie sich auf diese URL, dieser Typ hat tolle Benchmarks geteilt. medium.com/@bugwheels94/…
DHIRAJ KATEKAR
46

Mongo ist eine NoSQL-Datenbank.

Wenn Sie kein ORM für Ihre Datenmodelle verwenden möchten, können Sie auch den nativen Treiber mongo.js verwenden: https://github.com/mongodb/node-mongodb-native .

Mungo ist einer der Ormen, die uns Funktionen für den Zugriff auf die Mongodaten mit leicht verständlichen Abfragen geben.

Mungo spielt eine Rolle der Abstraktion über Ihr Datenbankmodell.

Anubhav Singh
quelle
1
@ArslanRamay: medium.com/@bugwheels94/… , sehr hilfreich
DHIRAJ KATEKAR
14

Ein weiterer Unterschied , den ich in Bezug auf beide gefunden ist , dass es ziemlich einfach, ist , connect to multiple databasesmit , mongodb native driverwährend Sie Gebrauch Workarounds haben in mongoosedenen noch einige Nachteile.

Wenn Sie sich also für eine Anwendung mit mehreren Mandanten entscheiden möchten, entscheiden Sie sich für den nativen mongodb-Treiber.

Rahul
quelle
6

Wenn Sie diese Komponenten zusammen mit Ihrem proprietären Code verwenden möchten, lesen Sie bitte die folgenden Informationen.

Mongodb:

  1. Es ist eine Datenbank.
  2. Diese Komponente unterliegt der Affero General Public License (AGPL) -Lizenz.
  3. Wenn Sie diese Komponente mit Ihrem proprietären Code verknüpfen, müssen Sie Ihren gesamten Quellcode öffentlich zugänglich machen, da er virale Auswirkungen hat (GPL, LGPL usw.).
  4. Wenn Sie Ihre Anwendung über die Cloud hosten, gilt (2) und Sie müssen Ihre Installationsinformationen für die Endbenutzer freigeben.

Mungo:

  1. Es ist ein Objektmodellierungswerkzeug.
  2. Diese Komponente unterliegt der MIT-Lizenz.
  3. Erlaubt die Verwendung dieser Komponente zusammen mit dem proprietären Code ohne Einschränkungen.
  4. Der Versand Ihrer Anwendung mit einem beliebigen Medium oder Host ist zulässig.
ANK
quelle
1
Ich dachte nur, ich würde es erwähnen. Die Serverkomponenten vor dem 16. Oktober 2018 waren AGPL, sind aber jetzt einige benutzerdefinierte Lizenzen. obwohl der Treiber (mongodb) immer Apache war und für proprietären Code nie von Bedeutung war. Ref: mongodb.com/community/licensing
DrHouse
2
Die Antwort für MongoDB Teil 4 ist falsch. Im Allgemeinen verwenden Clientanwendungen die MongoDB-Treiber (dh MongoDB Node.JS-Treiber), die unter Apache v2 lizenziert sind. Wenn Sie den MongoDB-Servercode selbst (die Datenbank) ändern und weitergeben, benötigen Sie entweder eine kommerzielle Vereinbarung oder Open Source. Die Änderung der SSPL-Lizenz ist nur eine Ergänzung für die Klausel der Cloud-Anbieter von Datenbank als Service, dh das Offenlegen der Datenbankfunktionen, die MongoDB Atlas oder AWS RDS usw. ähneln.
Wan Bachtiar
6

mongo-dbist wahrscheinlich keine gute Wahl für neue Entwickler.
Andererseits kann mongooseein ORM (Object Relational Mapping) eine bessere Wahl für die New-Bies sein.

Shreyash Pandey
quelle
2
Willkommen bei Stack Overflow! Ihre Antwort mag wertvoll sein, aber es fehlt eine Erklärung. Vielleicht können Sie Ihrer Antwort noch einige Wörter hinzufügen. Hier ist eine Anleitung, um gute Antworten zu geben .
David
4

Mongodb und Mongoose sind zwei verschiedene Treiber für die Interaktion mit der MongoDB-Datenbank.

Mongoose : ODM-Bibliothek (Object Data Modeling), die eine strenge Modellierungsumgebung für Ihre Daten bietet. Es wird für die Interaktion mit MongoDB verwendet und erleichtert das Leben, indem es die Verwaltung von Daten erleichtert.

Mongodb : nativer Treiber in Node.js zur Interaktion mit MongoDB.

Dhaker
quelle
3

Mongodb und Mongoose sind zwei völlig verschiedene Dinge!

Mongodb ist die Datenbank selbst , während Mongoose ein Objektmodellierungswerkzeug für Mongodb ist

EDIT: Wie bereits erwähnt, ist MongoDB das npm-Paket, danke!

Geheimnis
quelle
40
mongodb ist keine datenbank, sondern ein knotenpaket, das der native mongo-treiber ist. Es ist die API der niedrigsten Ebene für den Zugriff auf einen Mongo-Server von Knoten js.
Mariocatch
3
Die Frage betraf den nativen Mongodb- Treiber für DB- Operationen gegen Mungo. Die Antwort ist nicht auf den Punkt.
Sarora
@mariocatch MongoDB ist eine Dokumentendatenbank mit der gewünschten Skalierbarkeit und Flexibilität für die Abfrage und Indizierung, die Sie benötigen. Es ist auf der Homepage seiner Dokumentation geschrieben.
Deep Kakkar