Mongoose为node-mongodb-native驱动程序添加了多少开销?如果我只是想在几个集合上有几个结构相似的查询,那么直接使用驱动程序编写所有内容会更有意义吗?例如,我需要执行以下操作(使用驱动程序语言,从here复制):
db.collection('test', function(err, collection) {
collection.find({'a':1}, function(err, cursor) {
*do something*
}
}
我只需用变量替换'test'
和'a'
来保存我正在寻找的实际集合和密钥。
我认为在这种情况下直接使用驱动程序编写所有内容是有意义的。有没有理由使用Mongoose本身?通过考虑直接使用驱动程序,开销是否可以忽略不计以至于我是愚蠢的?
最好,谢谢,萨米
答案 0 :(得分:3)
取决于您的应用的规模。如果您只是进行一些查询,那么可能不值得添加Mongoose,但是一旦您的应用程序开始增长,Mongoose可以帮助保持其更易于维护。开发时间通常比处理时间更有价值。
除非您的应用程序要同时提供大量请求,否则您可能不会注意到性能上的差异。
答案 1 :(得分:1)
使用Mongoose的另一个好处是你可以在应用程序中预先定义你的模型(包括默认值,验证等),它们为你的应用程序提供了大量内在文档,并大大降低了不一致的可能性当你处理一个相对非结构化的数据模型时。
关系数据库有很多用于定义数据类型,默认值,索引等的功能,如果您(例如)尝试使用不存在的列,则会抛出错误。
Mongo消除了大量的开销,但它创造了更多的工作,确保在实现代码中记录和维护一致的数据模型;猫鼬使它变得容易多了。
它还有许多有用的功能可以控制模型,包括使用严格模式的选项(默认情况下从v3开始),这意味着你尚未定义的任何值都不会被写入数据库,“虚拟字段”,例如可以将名字和姓氏组合成一个字符串,就像它存储在数据库中一样(但不一定是这样),以及索引管理。有关详细信息,请参阅the guide。