Diferencia entre MongoDB y Mongoose

157

Quería usar la base de datos mongodb, pero noté que hay dos bases de datos diferentes con su propio sitio web y métodos de instalación: mongodb y mangosta. Entonces se me ocurrió esta pregunta: "¿Cuál uso?".

Entonces, para responder a esta pregunta, le pregunto a la comunidad si podría explicar cuáles son las diferencias entre estos dos. ¿Y si es posible pros y contras? Porque realmente se parecen mucho a mí.

Ravindra Galav
fuente
remítalo
DHIRAJ KATEKAR

Respuestas:

233

Supongo que ya sabe que MongoDB es un sistema de base de datos NoSQL que almacena datos en forma de documentos BSON. Sin embargo, su pregunta es sobre los paquetes para Node.js.

En términos de Node.js, mongodb es el controlador nativo para interactuar con una instancia de mongodb y mongoose es una herramienta de modelado de objetos para MongoDB.

Mongoose está construido sobre el controlador MongoDB para proporcionar a los programadores una forma de modelar sus datos.

EDITAR: No quiero comentar cuál es mejor, ya que esto haría que esta respuesta sea obvia. Sin embargo, enumeraré algunas ventajas y desventajas de usar ambos enfoques.

Con Mongoose, un usuario puede definir el esquema para los documentos en una colección particular. Proporciona mucha comodidad en la creación y gestión de datos en MongoDB. En el lado negativo, aprender mangosta puede llevar algo de tiempo y tiene algunas limitaciones en el manejo de esquemas que son bastante complejos.

Sin embargo, si su esquema de colección es impredecible, o si desea una experiencia similar a la de Mongo-shell dentro de Node.js, continúe y use el controlador MongoDB. Es el más sencillo de recoger. La desventaja aquí es que tendrá que escribir grandes cantidades de código para validar los datos, y el riesgo de errores es mayor.

ZeMoon
fuente
9
Esa es una pregunta bastante basada en la opinión. Algunos pueden preferir una API de nivel inferior. ¿Por qué no revisas Mongoose y el controlador nativo, y luego decides cuál es mejor para ti?
juunas
1
@ Michael9 El controlador nativo de MongoDB para Node.js tiene el mismo nombre. Tenga en cuenta las palabras 'en términos de Node.js ...'. Su edición fue incorrecta.
ZeMoon
@ZeMoon en este caso, debería ser mongodbno MongoDB: P
styvane
¿Podría haber una diferencia práctica donde la mangosta se vincula a los nombres de las colecciones en plural?
Antony Gibbs
2
También se debe considerar el factor de rendimiento, consulte esta url, este tipo ha compartido puntos de referencia increíbles. medium.com/@bugwheels94/…
DHIRAJ KATEKAR
46

Mongo es la base de datos NoSQL.

Si no desea usar ningún ORM para sus modelos de datos, también puede usar el controlador nativo mongo.js: https://github.com/mongodb/node-mongodb-native .

Mongoose es uno de los orms que nos brinda funcionalidad para acceder a los datos de mongo con consultas fácilmente comprensibles.

Mongoose juega un papel de abstracción sobre su modelo de base de datos.

Anubhav Singh
fuente
1
@ArslanRamay: medium.com/@bugwheels94/… , muy útil
DHIRAJ KATEKAR
14

Una de las diferencias más me encontré con respecto a ambos es que es bastante fácil connect to multiple databasescon el mongodb native drivertiempo que tiene que arounds uso de trabajo en mongoosela que todavía tienen algunos inconvenientes.

Entonces, si desea ir a una aplicación multiinquilino, busque el controlador nativo mongodb.

Rahul
fuente
6

Si planea utilizar estos componentes junto con su código de propiedad, consulte la información a continuación.

Mongodb:

  1. Es una base de datos.
  2. Este componente se rige por la licencia de Affero General Public License (AGPL).
  3. Si vincula este componente junto con su código propietario, entonces debe liberar todo su código fuente en el dominio público, debido a su efecto viral como (GPL, LGPL, etc.)
  4. Si aloja su aplicación en la nube, se aplicará el (2) y también deberá divulgar su información de instalación a los usuarios finales.

Mangosta:

  1. Es una herramienta de modelado de objetos.
  2. Este componente se rige por la licencia MIT.
  3. Se permite usar este componente junto con el código de propiedad, sin ninguna restricción.
  4. Se permite enviar su aplicación utilizando cualquier medio o host.
ANK
fuente
1
Solo pensé en mencionarlo. Los componentes del servidor antes del 16 de octubre de 2018 eran AGPL, pero ahora son una licencia personalizada. aunque el controlador (mongodb) siempre fue Apache y nunca importó para el código propietario. Ref: mongodb.com/community/licensing
DrHouse
2
La respuesta para MongoDB parte 4 es incorrecta. En general, las aplicaciones cliente utilizan los controladores MongoDB (es decir, el controlador MongoDB Node.JS) que tienen licencia de Apache v2. Si está modificando el código del servidor MongoDB (la base de datos) y redistribuyéndolo, entonces necesita un acuerdo comercial o de código abierto. El cambio de licencia SSPL es solo una adición para la cláusula de proveedores de nube de base de datos como servicio, es decir, exponer las características de la base de datos similares a MongoDB Atlas o AWS RDS, etc.
Wan Bachtiar
6

mongo-dbEs probable que no sea una gran opción para los nuevos desarrolladores.
Por otro lado, mongoosecomo un ORM (mapeo relacional de objetos) puede ser una mejor opción para los nuevos.

Shreyash Pandey
fuente
2
¡Bienvenido a Stack Overflow! Su respuesta puede ser valiosa pero le falta alguna explicación. Quizás todavía pueda agregar algunas palabras a su respuesta. Aquí hay una guía para dar buenas respuestas .
David
4

Mongodb y Mongoose son dos controladores diferentes para interactuar con la base de datos MongoDB.

Mongoose : biblioteca de modelado de datos de objetos (ODM) que proporciona un entorno de modelado riguroso para sus datos. Utilizado para interactuar con MongoDB, facilita la vida al proporcionar comodidad en la gestión de datos.

Mongodb : controlador nativo en Node.js para interactuar con MongoDB.

dhaker
fuente
3

¡Mongodb y Mongoose son dos cosas completamente diferentes!

Mongodb es la base de datos en sí , mientras que Mongoose es una herramienta de modelado de objetos para Mongodb.

EDITAR: Como se señaló MongoDB es el paquete npm, ¡gracias!

Secreto
fuente
40
mongodb no es una base de datos, es un paquete de nodos que es el controlador mongo nativo. Es la API de nivel más bajo para acceder a un servidor mongo desde el nodo js.
mariocatch
3
La pregunta se refería al controlador nativo de Mongodb para operaciones db frente a mangosta. La respuesta no está en el punto.
sarora
@mariocatch MongoDB es una base de datos de documentos con la escalabilidad y flexibilidad que desea con las consultas e indexación que necesita. Está escrito en la página de inicio de su documentación.
Deep Kakkar