Différence entre MongoDB et Mongoose


157

Je voulais utiliser la base de données mongodb, mais j'ai remarqué qu'il existe deux bases de données différentes avec leur propre site Web et leurs propres méthodes d'installation: mongodb et mongoose. Alors je suis venu me poser cette question: "Lequel dois-je utiliser?".

Donc, pour répondre à cette question, je demande à la communauté si vous pouvez expliquer quelles sont les différences entre ces deux? Et si possible avantages et inconvénients? Parce qu'ils me ressemblent vraiment beaucoup.


Réponses:


233

Je suppose que vous savez déjà que MongoDB est un système de base de données NoSQL qui stocke les données sous la forme de documents BSON. Votre question concerne cependant les packages pour Node.js.

En termes de Node.js, mongodb est le pilote natif pour interagir avec une instance de mongodb et mongoose est un outil de modélisation d'objets pour MongoDB.

Mongoose est construit sur le pilote MongoDB pour fournir aux programmeurs un moyen de modéliser leurs données.

EDIT: Je ne veux pas commenter ce qui est le meilleur, car cela rendrait cette réponse oppressée. Cependant, je vais énumérer certains avantages et inconvénients de l'utilisation des deux approches.

À l'aide de Mongoose, un utilisateur peut définir le schéma des documents d'une collection particulière. Il offre beaucoup de commodité dans la création et la gestion des données dans MongoDB. Par contre, l'apprentissage de la mangouste peut prendre un certain temps et présente certaines limites dans la gestion de schémas assez complexes.

Cependant, si votre schéma de collection est imprévisible ou si vous voulez une expérience de type Mongo-shell dans Node.js, alors continuez et utilisez le pilote MongoDB. C'est le plus simple à récupérer. L'inconvénient ici est que vous devrez écrire de plus grandes quantités de code pour valider les données, et le risque d'erreurs est plus élevé.


9
C'est une question plutôt basée sur l'opinion. Certains pourraient préférer une API de niveau inférieur. Pourquoi ne pas consulter Mongoose et le pilote natif, puis décider lequel est le meilleur pour vous?
juunas

1
@ Michael9 Le pilote natif MongoDB pour Node.js porte le même nom. Veuillez noter les mots «en termes de Node.js ...». Votre modification était incorrecte.
ZeMoon

@ZeMoon dans ce cas, il ne devrait mongodbpas être MongoDB: P
styvane

Pourrait-il y avoir une différence pratique où la mangouste établit des liens vers les noms de collection au pluriel?
Antony Gibbs

2
Il faut également tenir compte du facteur de performance, veuillez vous référer à cette URL, ce gars a partagé des repères impressionnants. medium.com/@bugwheels94/…
DHIRAJ KATEKAR

46

Mongo est une base de données NoSQL.

Si vous ne souhaitez pas utiliser d' ORM pour vos modèles de données, vous pouvez également utiliser le pilote natif mongo.js: https://github.com/mongodb/node-mongodb-native .

Mongoose est l'un des orm qui nous donne des fonctionnalités pour accéder aux données mongo avec des requêtes facilement compréhensibles.

Mongoose joue un rôle d'abstraction sur votre modèle de base de données.


1
@ArslanRamay: medium.com/@bugwheels94/… , très utile
DHIRAJ KATEKAR

14

Encore une différence , j'ai trouvé en ce qui concerne à la fois est qu'il est assez facile à connect to multiple databasesavec mongodb native driverpendant que vous devez contournements de travail d'utilisation dans mongoosequi ont encore quelques inconvénients.

Donc, si vous voulez opter pour une application mutualisée, optez pour le pilote natif mongodb.


6

Si vous prévoyez d'utiliser ces composants avec votre code propriétaire, veuillez vous reporter aux informations ci-dessous.

Mongodb:

  1. C'est une base de données.
  2. Ce composant est régi par la licence AGPL (Affero General Public License).
  3. Si vous liez ce composant avec votre code propriétaire, vous devez publier l'intégralité de votre code source dans le domaine public, en raison de son effet viral comme (GPL, LGPL, etc.)
  4. Si vous hébergez votre application sur le cloud, le (2) s'appliquera et vous devrez également divulguer vos informations d'installation aux utilisateurs finaux.

Mangouste:

  1. C'est un outil de modélisation d'objets.
  2. Ce composant est régi par la licence MIT.
  3. Autorisé à utiliser ce composant avec le code propriétaire, sans aucune restriction.
  4. L'expédition de votre application à l'aide de n'importe quel média ou hôte est autorisée.

1
Je pensais juste que je le mentionnerais. Les composants serveur avant le 16 octobre 2018 étaient AGPL, mais sont maintenant une licence personnalisée. bien que le pilote (mongodb) ait toujours été Apache et n'a jamais eu d'importance pour le code propriétaire. Ref: mongodb.com/community/licensing
DrHouse

2
La réponse pour MongoDB partie 4 est incorrecte. En général, les applications clientes utilisent les pilotes MongoDB (c'est-à-dire le pilote MongoDB Node.JS) qui sont sous licence Apache v2. Si vous modifiez le code du serveur MongoDB lui-même (la base de données) et le redistribuez, vous avez besoin d'un accord commercial ou de l'open source. Le changement de licence SSPL n'est qu'un ajout à la clause des fournisseurs de cloud de base de données en tant que service, c'est-à-dire exposant les fonctionnalités de base de données similaires à MongoDB Atlas ou AWS RDS, etc.
Wan Bachtiar

6

mongo-dbn'est probablement pas un excellent choix pour les nouveaux développeurs.
D'autre part mongoose, un ORM (Object Relational Mapping) peut être un meilleur choix pour les débutants.


2
Bienvenue dans Stack Overflow! Votre réponse peut être précieuse, mais il manque une explication. Peut-être pouvez-vous encore ajouter quelques mots à votre réponse. Voici un guide pour donner de bonnes réponses .
David

4

Mongodb et Mongoose sont deux pilotes différents pour interagir avec la base de données MongoDB.

Mongoose : bibliothèque de modélisation de données objet (ODM) qui fournit un environnement de modélisation rigoureux pour vos données. Utilisé pour interagir avec MongoDB, il facilite la vie en offrant une commodité de gestion des données.

Mongodb : pilote natif dans Node.js pour interagir avec MongoDB.


2

Mongodb et Mongoose sont deux choses complètement différentes!

Mongodb est la base de données elle - même , tandis que Mongoose est un outil de modélisation d'objets pour Mongodb

EDIT: Comme indiqué, MongoDB est le package npm, merci!


40
mongodb n'est pas une base de données, c'est un package de nœuds qui est le pilote natif de mongo. C'est l'API de niveau le plus bas pour accéder à un serveur mongo à partir du nœud js.
mariocatch

3
La question concernait le pilote natif Mongodb pour les opérations db par rapport à la mangouste. La réponse n'est pas sur le point.
sarora

@mariocatch MongoDB est une base de données de documents avec l'évolutivité et la flexibilité que vous souhaitez avec l'interrogation et l'indexation dont vous avez besoin. Il est écrit sur la page d'accueil de sa documentation.
Deep Kakkar le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.