我想使用mongodb数据库,但我注意到有两个不同的数据库,它们都有自己的网站和安装方法:mongodb和mongoose。所以我开始问自己这个问题:“我该用哪一个?”
所以为了回答这个问题,我问社区是否可以解释这两者之间的区别?如果可能的话,有利有弊?因为在我看来他们真的很像。
我想使用mongodb数据库,但我注意到有两个不同的数据库,它们都有自己的网站和安装方法:mongodb和mongoose。所以我开始问自己这个问题:“我该用哪一个?”
所以为了回答这个问题,我问社区是否可以解释这两者之间的区别?如果可能的话,有利有弊?因为在我看来他们真的很像。
当前回答
如果您计划将这些组件与您的专有代码一起使用,请参考以下信息。
Mongodb:
它是一个数据库。 该组件由Affero通用公共许可证(AGPL)许可证管理。 如果你将这个组件与你的专有代码一起链接,那么你必须在公共领域发布你的整个源代码,因为它的病毒效应,如(GPL, LGPL等) 如果你在云上托管你的应用程序,(2)将适用,而且你必须向最终用户发布你的安装信息。
猫鼬:
它是一个对象建模工具。 该组件由MIT许可证管理。 允许与专有代码一起使用该组件,没有任何限制。 允许使用任何媒体或主机传送应用程序。
其他回答
MongoDB是官方的MongoDB Node.js驱动程序,允许Node.js应用程序连接到MongoDB并处理数据。 另一方面,Mongoose是建立在mongoDB之上的其他库。它更容易理解和使用。如果你是一个初学者,猫鼬是更好的为你工作。
Mongodb和Mongoose是与Mongodb数据库交互的两种不同的驱动程序。
Mongoose:对象数据建模(ODM)库,为您的数据提供严格的建模环境。它用于与MongoDB交互,通过提供管理数据的便利,使生活更加轻松。
Mongodb: Node.js中与Mongodb交互的原生驱动。
我发现两者之间的另一个区别是,使用mongodb本地驱动程序连接多个数据库相当容易,而在mongoose中使用仍然有一些缺点的工作方法。
所以如果你想要一个多租户应用程序,选择mongodb原生驱动。
Mongo是NoSQL数据库。
如果你不想为你的数据模型使用任何ORM,那么你也可以使用本地驱动程序mongo.js: https://github.com/mongodb/node-mongodb-native。
Mongoose是orm中的一种,它为我们提供了简单易懂的查询来访问mongo数据的功能。
Mongoose在数据库模型上扮演抽象的角色。
我假设你已经知道MongoDB是一个NoSQL数据库系统,它以BSON文档的形式存储数据。你的问题是关于Node.js的包。
在Node.js方面,mongodb是与mongodb实例交互的原生驱动程序,mongoose是mongodb的对象建模工具。
Mongoose构建在mongodb驱动程序之上,为程序员提供了一种对数据建模的方法。
编辑: 我不想评论哪个更好,因为这会让我的回答显得固执己见。但是,我将列出使用这两种方法的一些优点和缺点。
使用mongoose,用户可以为特定集合中的文档定义模式。它为MongoDB中数据的创建和管理提供了很多便利。缺点是,学习猫鼬可能需要一些时间,并且在处理相当复杂的模式时有一些限制。
然而,如果你的集合模式是不可预测的,或者你想在Node.js中获得类似于mongodb shell的体验,那么就使用mongodb驱动程序吧。这是最容易上手的。这样做的缺点是必须编写大量的代码来验证数据,出错的风险也更高。