node.js - MongoDB和Mongoose之间的区别

我想使用mongodb数据库,但我注意到有两个不同的数据库,有自己的网站和安装方法:mongodb和mongoose。 所以我想问自己这个问题:"我使用哪一个?"。

所以为了回答这个问题,我问社区你是否可以解释这两者之间有什么区别? 如果可能的利弊? 因为他们看起来和我很相似。

Ravindra Galav asked 2019-08-09T22:10:18Z
7个解决方案
154 votes

我假设您已经知道MongoDB是一个NoSQL数据库系统,它以BSON文档的形式存储数据。 然而,你的问题是关于Node.js的软件包。

就Node.js而言,mongodb是与mongodb实例交互的本机驱动程序,而mongoose是MongoDB的Object建模工具。

Mongoose基于MongoDB驱动程序,为程序员提供了一种对数据建模的方法。

编辑:我不想评论哪个更好,因为这会使这个答案自以为是。 但是,我将列出使用这两种方法的一些优点和缺点。

使用Mongoose,用户可以为特定集合中的文档定义模式。 它为MongoDB中的数据创建和管理提供了很多便利。 在缺点方面,学习mongoose可能需要一些时间,并且在处理相当复杂的模式方面存在一些限制。

但是,如果您的集合架构不可预测,或者您希望在Node.js中有类似Mongo-shell的体验,那么请继续使用MongoDB驱动程序。 这是最简单的选择。 这里的缺点是你必须编写更大量的代码来验证数据,并且错误的风险更高。

ZeMoon answered 2019-08-09T22:11:06Z
34 votes

Mongodb是NoSQL数据库。

如果您不想为数据模型使用任何ORM,那么您也可以使用本机驱动程序mongo.js:[https://github.com/mongodb/node-mongodb-native。]

Mongoose是一个为我们提供使用易于理解的查询来访问mongo数据的功能的orm。

Mongoose在数据库模型中扮演抽象角色。

Anubhav Singh answered 2019-08-09T22:11:51Z
8 votes

我发现两者之间的另一个区别是connect to multiple databasesmongodb native driver相当容易,而你必须在mongoose中使用仍有一些缺点的工作。

因此,如果您想要使用多租户应用程序,请转到mongodb本机驱动程序。

Rahul answered 2019-08-09T22:12:23Z
3 votes

Mongodb和Mongoose是与MongoDB数据库交互的两种不同驱动程序。

Mongoose:对象数据建模(ODM)库,为您的数据提供严格的建模环境。 用于与MongoDB交互,通过提供管理数据的便利性,使生活更轻松。

Mongodb:Node.js中的本机驱动程序与MongoDB交互。

dhaker answered 2019-08-09T22:13:02Z
3 votes

如果您计划将这些组件与您的专有代码一起使用,请参阅以下信息。

MongoDB的:

  1. 它是一个数据库。
  2. 此组件受Affero通用公共许可证(AGPL)许可证的约束。
  3. 如果您将此组件与您的专有代码链接,那么您必须在公共域中发布您的整个源代码,因为它的病毒效应如(GPL,LGPL等)
  4. 如果您通过云托管应用程序,则(2)将适用,您还必须向最终用户发布安装信息。

猫鼬:

  1. 它是一个对象建模工具。
  2. 此组件受MIT许可证管辖。
  3. 允许将此组件与专有代码一起使用,不受任何限制。
  4. 允许使用任何媒体或主机发送您的应用程序。
ANK answered 2019-08-09T22:14:37Z
2 votes

mongo-db可能不是新开发人员的绝佳选择。
另一方面,作为ORM(对象关系映射)的mongoose可以是新bies的更好选择。

Shreyash Pandey answered 2019-08-09T22:15:09Z
1 votes

Mongodb和Mongoose是两个完全不同的东西!

Mongodb是数据库本身,而Mongoose是Mongodb的对象建模工具

编辑:正如指出MongoDB是npm包,谢谢!

Secret answered 2019-08-09T22:15:48Z
translate from https://stackoverflow.com:/questions/28712248/difference-between-mongodb-and-mongoose